Pandas 将一列重塑为多列
我正在使用的df如下所示:Pandas 将一列重塑为多列,pandas,Pandas,我正在使用的df如下所示: Year Age Income 1945 1 234 1945 1 65 1945 2 234 ... 1946 1 34 ... 2015 5 34 我想把它转换成这样,收入值填充df,年龄是指数 Age 1955 1956 1957 ... 2015 0 1 2 3 ... 99 这看起来像是您希望透视表。熊猫很好 import pandas as pd df = pd.DataFrame([[1945, 1, 2
Year Age Income
1945 1 234
1945 1 65
1945 2 234
...
1946 1 34
...
2015 5 34
我想把它转换成这样,收入值填充df,年龄是指数
Age 1955 1956 1957 ... 2015
0
1
2
3
...
99
这看起来像是您希望透视表。熊猫很好
import pandas as pd
df = pd.DataFrame([[1945, 1, 234],[1946, 1, 65],[1945, 2, 234]])
df.columns = ['year', 'age', 'income']
df.pivot(index='age', columns='year', values='income')
这看起来像:
year 1945 1946
age
1 234 65
2 234 None
如果您的
['Year','Age']
组合是唯一的,您只需要设置索引
和取消堆栈
df.set_index(['Year', 'Age']).Income.unstack('Year')
但他们不是
因此,您必须决定如何聚合组合组。
下面是使用
sum
df.groupby(['Year', 'Age']).Income.sum().unstack('Year', fill_value=0)
Year 1945 1946 2015
Age
1 299 34 0
2 234 0 0
5 0 0 34
其他聚合
df.groupby(['Year', 'Age']).Income.first().unstack('Year', fill_value=0)
df.groupby(['Year', 'Age']).Income.last().unstack('Year', fill_value=0)
df.groupby(['Year', 'Age']).Income.mean().unstack('Year', fill_value=0)
pivot\u表
pivot
类似于set\u索引
groupby
这意味着,
pivot\u表
处理聚合
df.pivot_table('Income', 'Age', 'Year', 'sum', fill_value=0)
df.pivot_table('Income', 'Age', 'Year', 'first', fill_value=0)
df.pivot_table('Income', 'Age', 'Year', 'last', fill_value=0)
df.pivot_table('Income', 'Age', 'Year', 'mean', fill_value=0)
您希望在年龄=1,年份=1945列中出现什么?显示了两个不同的值。如果这是一个打字错误,我的答案应该是正确的