使用Pandas重塑包含非数字值的数据框
我是一名使用R语言的用户,现在正在学习Python。在我的工作中,我经常需要调整数据框的形状,而每个单元格里都包含字符串。对于我来说,在R语言中使用dcast
函数来自reshape2
包来调整形状非常简单。我想用pandas
包做类似的事情,就像下面的脚本:
import pandas as pd
temp = pd.DataFrame(index=arange(10), columns=['a','b','c','d'])
temp['a'] = 'A'
temp['b'] = 'B'
temp['c'] = 'C'
temp['d'] = 'D'
temp = pd.melt(temp, id_vars=['a','b'])
temp
pd.pivot_table(temp,index=['a','b'],columns='variable',values='value')
但是我总是遇到一个错误,提示DataError: No numeric types to aggregate
。我觉得问题出在aggfunc
上,因为默认值是np.mean
。有没有其他的aggfunc
可以用来列出单元格的内容,而不是计算单元格的某个值呢?
1 个回答
1
pd.pivot_table(temp,index=['a','b'],columns='variable',values='value',
aggfunc=lambda x: ', '.join(x.unique()))
你可以自己写一个函数来作为 aggfunc
。