DataFrame
中的列为Series
,因此可能使用Series
作为pivot_table
中的参数。
所以有可能使用预处理列name
自定义函数只返回最后一个字母,因为它返回Series
什么是完美的有效输入。
样品:
names = pd.DataFrame({
'name': ['John','John','John','Josh','Josh','Josh','Sara','Sara','Sara'],
'births': [10,20,10,40,70,10,20,30,50],
'year': [1980,1985,1980,1985,1985,1985,1985,1980,1980],
'sex': ['m','m','m','m','m','m','f','f','f']
})
print (names)
births name sex year
0 10 John m 1980
1 20 John m 1985
2 10 John m 1980
3 40 Josh m 1985
4 70 Josh m 1985
5 10 Josh m 1985
6 20 Sara f 1985
7 30 Sara f 1980
8 50 Sara f 1980
# extract last letter from name column
get_last_letter = lambda x: x[-1]
last_letters = names.name.map(get_last_letter)
last_letters.name = 'last_letter'
print (last_letters)
0 n
1 n
2 n
3 h
4 h
5 h
6 a
7 a
8 a
Name: last_letter, dtype: object
print (type(last_letters))
<class 'pandas.core.series.Series'>
table = names.pivot_table(values='births', index=last_letters,
columns=['sex', 'year'], aggfunc=np.sum)
print (table)
sex f m
year 1980 1985 1980 1985
last_letter
a 80.0 20.0 NaN NaN
h NaN NaN NaN 120.0
n NaN NaN 20.0 20.0
肯定,但如何大熊猫知道它应该聚集和准与索引'了'只有那些'name's那以'a'结尾? –
因为'last_letters'是Series,请给我一些时间,我创建示例。 – jezrael
谢谢你的样品!只是为了澄清,如果我试图传递与'last_letters'相同的信息,但在'list'而不是'Series'中,它会崩溃,对吗?那么这是否意味着'Series'存储的信息是“我是从表格中的一列创建的”,所以如果您将它用作“索引”,表格会知道该怎么做? –