Python和数据框的新增功能。我的问题源于我普遍对如何在不同情况下正确访问数据帧中的数据缺乏了解。 希望您能并且会帮助我。
我有一个名为“ df_hat”的数据框。它有一列称为“ blockid”。 “ blockid”在不同的行中可以具有相同的值,但是数据按“ blockid”分组,如下所示:
#'df_hat' example
blockid elec_consumption
0 3340 -0.408
1 3340 -0.006
2 3340 -0.888
3 17229 -0.409
4 17229 -0.007
5 17229 -0.889
6 17229 -0.345
我想做的是:对于'df_hat'中每个唯一的'blockid',我希望选择所有带有'blockid'的行,在这个'df_hat'子集中添加一个新列,做点事然后循环。新列应为“ elec_consumption”列的累加总和。
我这样做是这样的:
for bid in df_hat.blockid.unique():
df_subset = df_hat.loc[df_hat['blockid'] == bid] #Original
df_subset['elec_consumption_accum'] = df_subset['elec_consumption'].cumsum() #Original
这应该为我提供每个不同“ blockid”的数据帧子集,类似于下面的两个示例:
#'df_hat' subset example, blockid = 3340
blockid elec_consumption elec_consumption_accum
0 3340 -0.408 -0.408
1 3340 -0.006 -0.414
2 3340 -0.888 -1.302
和
#'df_hat' subset example, blockid = 17229
blockid elec_consumption elec_consumption_accum
0 17229 -0.409 -0.409
1 17229 -0.007 -0.416
2 17229 -0.889 -1.305
3 17229 -0.345 -1.650
但是我的代码给了我这些警告。
C:\Users\User1\AppData\Local\Programs\Python\Python37-32\lib\site-
packages\pandas\core\indexing.py:543: SettingWithCopyWarning:
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
See the caveats in the documentation: http://pandas.pydata.org/pandas-
docs/stable/indexing.html#indexing-view-versus-copy
我真的不确定如何解决此问题并正确使用.loc或.iloc。 任何建议深表感谢。 预先感谢。