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



我有一个pandas数据帧。我想制作另一个数据帧,其中的列将是第一帧中所选列的总和。

例如,在第一个数据帧中,我有名为'A''B''C''D'的列。新列为'X''Y''X'必须是它们的'A''B''C'的和,而'Y'只包含'D'。"映射"可以保存在字典{'X': ['A', 'B', 'C'], Y: ['D']}中,但不一定需要。

我应该用键'X''Y'初始化空数据帧,然后添加列吗?或者有更快的方法吗?

您可以直接初始化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']

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

样本输入:

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

最新更新