【问题标题】:Pandas adding columns together熊猫将列添加在一起
【发布时间】: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 语句,但我必须假设必须有更好的方法。任何帮助将不胜感激。

【问题讨论】:

标签: python pandas


【解决方案1】:

您可以使用内置的 pandas 数据框功能来实现这一点。

假设您的数据在 list_names 上作为此内容顺序的行列表:日期、F_1、F-2、键

import pandas as pd

df = pd.DataFrame(list_names,columns=["Date","F_1","F_2","Key"])

# Filter by key = "NY"
df = df.loc[df["Key"] == "NY",:]

# Now group by date column, it will automatically sum F_1 and F_2 columns
df = df.groupby("Date").sum()

print(df)

这将为您提供所需的输出

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-02
    • 1970-01-01
    • 2021-06-11
    • 1970-01-01
    • 1970-01-01
    • 2023-01-17
    • 2022-01-26
    相关资源
    最近更新 更多