熊猫:根据其他列添加新列

时间:2015-06-24 03:01:12

标签: python pandas

给出像这样的DataFrame:

>>>df
  paper year citation
0   A   2000    1
1   A   2001    2
2   B   2000    3
3   B   2001    4
4   B   2002    5

我想添加三列(即year2000,year2001,year2002),结果将是:

>>>dfnew
  paper year2000 year2001 year2002
0   A      1        2         0
1   B      3        4         5

1 个答案:

答案 0 :(得分:0)

您可以将pivot_tablevalues='citation'rows='paper'columns='year'一起使用,并通过NaNs填充fill_value=0

In [9]: pd.pivot_table(df, values='citation', rows='paper', columns='year', fill_value=0)
Out[9]:
year   2000  2001  2002
paper
A         1     2     0
B         3     4     5

或者,您可以使用pd.crosstab之类的

In [10]: pd.crosstab(index=df['paper'], columns=df['year'], values=df['citation'],
                     aggfunc=pd.np.sum)
Out[15]:
year   2000  2001  2002
paper
A         1     2   NaN
B         3     4     5