DataFrameのすべての負の数をゼロで置き換えることができますか?パンダのデータフレームの負の数値をゼロで置き換える方法
20
A
答えて
30
すべての列が数値であれば、あなたはブールインデックスを使用することができます
In [1]: import pandas as pd
In [2]: df = pd.DataFrame({'a': [0, -1, 2], 'b': [-3, 2, 1],
'c': ['foo', 'goo', 'bar']})
In [3]: df
Out[3]:
a b c
0 0 -3 foo
1 -1 2 goo
2 2 1 bar
In [4]: num = df._get_numeric_data()
In [5]: num[num < 0] = 0
In [6]: df
Out[6]:
a b c
0 0 0 foo
1 0 2 goo
2 2 1 bar
:より一般的なケースについては
In [1]: import pandas as pd
In [2]: df = pd.DataFrame({'a': [0, -1, 2], 'b': [-3, 2, 1]})
In [3]: df
Out[3]:
a b
0 0 -3
1 -1 2
2 2 1
In [4]: df[df < 0] = 0
In [5]: df
Out[5]:
a b
0 0 0
1 0 2
2 2 1
を、this answerはプライベートメソッド_get_numeric_data
を示しtimedelta
タイプでは、ブールインデックスは別々のカラムで動作するようです。bデータフレーム全体ではありません。だから、行うことができます。
In [1]: import pandas as pd
In [2]: df = pd.DataFrame({'a': pd.to_timedelta([0, -1, 2], 'd'),
...: 'b': pd.to_timedelta([-3, 2, 1], 'd')})
In [3]: df
Out[3]:
a b
0 0 days -3 days
1 -1 days 2 days
2 2 days 1 days
In [4]: for k, v in df.iteritems():
...: v[v < 0] = 0
...:
In [5]: df
Out[5]:
a b
0 0 days 0 days
1 0 days 2 days
2 2 days 1 days
更新:全体のデータフレームのpd.Timedelta
作品と比較:
In [1]: import pandas as pd
In [2]: df = pd.DataFrame({'a': pd.to_timedelta([0, -1, 2], 'd'),
...: 'b': pd.to_timedelta([-3, 2, 1], 'd')})
In [3]: df[df < pd.Timedelta(0)] = 0
In [4]: df
Out[4]:
a b
0 0 days 0 days
1 0 days 2 days
2 2 days 1 days
4
おそらく、あなたがそうのようなpandas.where(args)
を使用することができます。
data_frame = data_frame.where(data_frame < 0, 0)
13
を
これを行うもう1つの簡潔な方法はです。例えば
:
import pandas as pd
In [20]: df = pd.DataFrame({'a': [-1, 100, -2]})
In [21]: df
Out[21]:
a
0 -1
1 100
2 -2
In [22]: df.clip(lower=0)
Out[22]:
a
0 0
1 100
2 0
df.clip_lower(0)
もあります。
関連する問題
- 1. excel負の数をゼロで置き換える方法は?
- 2. データフレーム内でOnesをゼロとゼロで置き換える方法
- 3. モデル(ODEシステム)の負の値をゼロに置き換える
- 4. パンダのデータフレームで選択した列の値を置き換える方法は?
- 5. パンダのデータフレームの値を置き換える際の問題?
- 6. パンダのデータフレームの置き換え
- 7. IDでデータフレームの値を置き換える方法は?
- 8. 複数の列でゼロ値にゼロ値を置き換える[Spotfire]
- 9. パンダのデータフレームのサブセットを他のシリーズに置き換える方法
- 10. パンダのデータフレームでNaNを可変型に置き換える
- 11. データフレームの列を複数の列に置き換える方法
- 12. パンダのデータフレーム列の値を前の値に置き換えます
- 13. パンダのデータフレーム内の各セルの値を効率的に置き換える
- 14. パンダは、非ゼロを一部の列の値1に置き換えます。
- 15. データフレームの値の置き換え - R
- 16. パンダのデータフレーム列の置き換え方法別の列の値の値のベースB
- 17. パンダのデータフレームNaTをNoneに置き換えてください
- 18. 他のデータフレームのデータフレームの値をPandasに置き換えます
- 19. 計算機シンボルがゼロのときの置き換え方法
- 20. パンダのデータフレームで複数の値を置き換えるにはどうすればいいですか?
- 21. R:データフレームのある値を別の値に置き換える
- 22. パンダ:複数の列の値を一意の値で置き換えます。
- 23. パンダのデータフレームの数字を「ナノ」に置き換えてください
- 24. パンダのデータフレーム内のオブジェクトの量でオブジェクトを置き換えるには?
- 25. Apply関数がデータフレーム内の値を置き換えません
- 26. pandasデータフレームの行の値をソートして列名に置き換える方法
- 27. Spark - Scala - データフレームの値を別のデータフレームの参照値に置き換える
- 28. NaN値をpandas pythonで他のデータフレームに置き換える
- 29. パンダで文字列の非数値または小数点を置き換える方法
- 30. パンダでデータフレーム全体の値を浮動小数点に変換する方法
また、2行目で 'num [num <0] = 0' – hlin117