2016-07-25 231 views
0

我有一个熊猫数据框。我想创建另一个数据框,其中的列将成为第一帧中所选列的总和。来自另一个数据帧的大小熊猫数据帧

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

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

回答

2

您只需直接初始化已经与数据数据帧在它:

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_framename作为您想要的栏目名称。否则,df2将成为一个Series而不是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