Pandas来自另一个数据帧的总和的数据帧

时间:2016-07-25 15:28:52

标签: pandas dataframe sum

我有一个pandas数据帧。我想创建另一个数据帧,哪些列将是第一帧中所选列的总和。

例如,在第一个数据框中,我有名为'A''B''C''D'的列。新列'X''Y'以及'X'必须是'A''B''C'以及'Y'包含的总和只有1个}}。 "映射"可以保存在字典中:'D',但不一定非必要。

我应该使用密钥{'X': ['A', 'B', 'C'], Y: ['D']}'X'初始化空数据框,然后添加列还是有更快的方法?

1 个答案:

答案 0 :(得分:2)

您可以直接使用其中的数据初始化DataFrame:

df2 = pd.DataFrame({'X': df[['A', 'B', 'C']].sum(axis=1), 'Y': df['D']})

或者您可以逐列构建它:

df2 = df[['A', 'B', 'C']].sum(axis=1).to_frame(name='X')
df2['Y'] = df['D']

对于第一列,您需要使用to_frame作为所需的列名称来呼叫name。否则,df2将是系列而不是数据框,您在添加列时会遇到问题。在初始列之后,您可以像往常一样分配列。

示例输入:

df = pd.DataFrame({'A':[3,1,4],'B':[1,5,9],'C':[2,6,5],'D':[3,5,8]})

   A  B  C  D
0  3  1  2  3
1  1  5  6  5
2  4  9  5  8

示例输出(对于任一方法):

    X  Y
0   6  3
1  12  5
2  18  8