错误实况
测试了几次,可能是因为结果列的第一行是一个列表导致报错。一开始我想的是添加一条全部为0的数据,但是第一次运行成功了,后续又失败,被恶心到了,就想规避一下我不懂的部分。
import pandas as pd
df1 = pd.DataFrame([['张三',22],['张三',22],['张三',23],['里斯',51],['里斯',32],['张三',23],['王大爷',89]],columns = ['name','age'])
df1.groupby('name').agg(lambda x:x.mode()).reset_index()
#输出
#ValueError: Shape of passed values is (2, 3), indices imply (1, 3)
import pandas as pd
df1 = pd.DataFrame([['张三',22],['张三',22],['张三',23],['里斯',51],['里斯',32],['张三',22],['王大爷',89]],columns = ['name','age'])
df1.groupby('name').agg(lambda x:x.mode()).reset_index()
#输出
name age
0 张三 22
1 王大爷 89
2 里斯 [32, 51]
解决方案
对于每一个name,从df中取出age形成series,用series求mod