【发布时间】:2020-08-15 23:46:38
【问题描述】:
我在 pandas 中有一个数据框,并且在本例名称中我以给定元素为中心。每个透视数据框都按日期索引,有一个“键”列和另外 2 个列 F_1、F_2。我想要的是找到具有给定键的所有元素,并按日期将 F_1 和 F_2 中的所有元素相加。我有一个 list_names 存储所有唯一名称。这是我的数据框的样子
以上内容存储在名称数据框中。我想要的是如果 Key 是 NY,将 Alfred、Claire 和 Dane 的 F_1/F_2 相加得到以下输出
我的代码如下,但我的实际输出最终是:
key='NY'
sub_names=[]
for s in list_names: #list_names is the full list of actual names
for x in names[s]['Key']:
if key ==x;
sub_names.append(s)
#Note I tried to combine the above for/if statement as "if key in names[s]['Key']"
#but it kept having a run time error
sub_frame=pd.DataFrame[columns = ['date','F_1','F_2','Key']]
sub_frame.set_index(['date'])
counter = 0
for z in sub_names:
if counter ==0:
sub_frame['F_1']=names[z]['F_1']
sub_frame['F_2']=names[z]['F_2']
counter=counter+1
else:
sub_frame['F_1']=sub_frame['F_1']+names[z]['F_1']
sub_frame['F_2']=sub_frame['F_2']+names[z]['F_2']
sub_frame['Key']=key
display(sub_frame)
这给了我上面的结果,我的最终输出有 NAN 作为 2 个条目。我可以添加额外的排除 NAN 值的 if 语句,但我必须假设必须有更好的方法。任何帮助将不胜感激。
【问题讨论】: