15

列構造を持つ pandas データフレーム (df) があります。

month a b c d

このデータフレームには、たとえば1月、2月、3月、4月のデータがあります。A、B、C、Dは数値列です。Feb の月の場合、列 A を再計算してデータフレームで更新したい、つまり月 = Feb、A = B + C + D の場合

私が使用したコード:

 df[df['month']=='Feb']['A']=df[df['month']=='Feb']['B'] + df[df['month']=='Feb']['C'] + df[df['month']=='Feb']['D'] 

これはエラーなしで実行されましたが、2 月の列 A の値は変更されませんでした。コンソールでは、次のメッセージが表示されました。

DataFrame からのスライスのコピーに値を設定しようとしています。
代わりに .loc[row_indexer,col_indexer] = value を使用してみてください

.loc を使用しようとしましたが、現在作業中のデータフレームを使用.reset_index()していましたが、インデックスを設定して .loc を使用する方法がわかりません。ドキュメントに従いましたが、明確ではありません。ここで私を助けてくれませんか?これはデータフレームの例です:

 import pandas as pd import numpy as np
 dates = pd.date_range('1/1/2000', periods=8)
 df = pd.DataFrame(np.random.randn(8, 4), index=dates, columns=['A', 'B', 'C', 'D']) 

2000-01-03 という 1 つの日付を更新したいと思います。リアルタイム データであるため、データのスニペットを提供できません。

4

2 に答える 2