我有一个pandas数据框(df),具有列结构:
month a b c d
这个数据框包含1月、2月、3月、4月的数据。A、B、C、D是数字列。对于二月,我想重新计算列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列中的值。在控制台中,它给出了一条消息:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
我试图使用.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。我无法提供我的数据片段,因为它是实时数据。
虽然不是最漂亮的,但我实现您的目标的方式(无需显式地遍历行)是:
注意:
ix
has been deprecated自从熊猫v0.20.0以来,赞成iloc
/loc
。从警告中可以看出,应该使用
loc[row_index, col_index]
。在对数据进行子集设置时,会得到索引值。只需传递行索引,然后使用逗号col_name:相关问题 更多 >
编程相关推荐