当前位置:  开发笔记 > 编程语言 > 正文

使用loc更新数据框python pandas

如何解决《使用loc更新数据框pythonpandas》经验,为你挑选了1个好方法。

我有一个具有列结构的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。我无法提供数据片段,因为它是实时数据。



1> Anton Protop..:

从警告中可以看出,您应该使用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'] 

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有