使用Pandas重塑包含非数字值的数据框

0 投票
1 回答
767 浏览
提问于 2025-04-18 15:09

我是一名使用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

撰写回答