我有一个具有列结构的pandas数据框(df):
month a b c d
此数据框具有例如1月,2月,3月,4月的数据。A,B,C,D是数字列。对于2月,我想重新计算A列并在数据框中更新它,例如,对于month = 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。我无法提供数据片段,因为它是实时数据。
从警告中可以看出,您应该使用loc[row_index, col_index]
。子集数据时,您将获得索引值。您只需要传递row_index,然后使用逗号col_name即可:
df.loc[df['month'] == 'Feb', 'A'] = df.loc[df['month'] == 'Feb', 'B'] + df.loc[df['month'] == 'Feb', 'C'] + df.loc[df['month'] == 'Feb', 'D']