python - 将熊猫分组列转换为字符串时出错
问题描述
我正在尝试将熊猫框架的分组列转换为字符串:
import pandas as pd
df = pd.DataFrame({
'date' : ['2018-01-01','2018-01-01','2018-01-02','2018-01-02'],
'product' : ['apple','banana','banana','pear'],
'price' : [100,200,300,400]
})
grouped_df = df.groupby('date').agg({'product': ['unique'], 'price': ['sum']}).reset_index()
grouped_df['product'] = grouped_df['product'].apply( lambda l: ";".join(l.tolist()) )
print(grouped_df.to_csv(header=False))
目标是输出apple;banana
CSV 而不是['apple', 'banana']
但是当我尝试运行时grouped_df['product'].apply( lambda l: ";".join(l.tolist()) )
,我得到一个TypeError: ('sequence item 0: expected str instance, numpy.ndarray found', 'occurred at index unique')
.
任何帮助,将不胜感激。先感谢您。
解决方案
试试这样:
grouped_df['product'] = grouped_df['product']['unique'].apply(lambda x: ';'.join(x))
>>> grouped_df
date product price
unique sum
0 2018-01-01 apple;banana 300
1 2018-01-02 banana;pear 700
问题是您试图访问多级列,但跳过了该unique
级别。所以你访问的实际上是 a DataFrame
,但你想访问 a Series
:
>>> type(grouped_df['product'])
<class 'pandas.core.frame.DataFrame'>
>>> type(grouped_df['product']['unique'])
<class 'pandas.core.series.Series'>
推荐阅读
- swift - 如何在 SwiftUI 中使用函数 return ToolbarItem?
- reactjs - Best practice to load pre-request resources before loading pages
- html - 到达屏幕底部时隐藏固定图像
- asp.net - 在 Heroku 上的 Docker 容器中运行 aspnetcore 应用程序时出现错误消息
- c++ - CMake for LLVM 生成的 Visual Studio 2017 解决方案中的筛选文件有问题
- linux - Anaconda虚拟环境Tensorflow分配95%的内存,进程很慢
- vhdl - 初始化 VHDL 数组元素
- javascript - 纱线全局命令给出奇怪的输出
- c# - 尝试使用 ftp 和 clickonce 在 vs 中发布我的应用程序,但似乎无法连接到主机网站并出现以下错误
- haskell - 两个列表递归的最后一个元素