python - 从多行到单行的 DataFrame 转换
问题描述
我有看起来像的熊猫数据框(空白事务 ID 属于 ID 1 或 ID 2):
df = pd.DataFrame(data=np.array([['1', 'Item1'], ['', 'Item2',], ['', 'Item3'] , ['2', 'Item1'], ['', 'Item2',]]), columns=['TransactionId', 'ProdictName'])
我正在寻找解决方案如何将df转换为没有空白事务 ID的新df1,并且项目用逗号分隔:
df1 = pd.DataFrame(data=np.array([['1', 'Item1, Item2, Item3'], ['2', 'Item1, Item2']]), columns=['TransactionId', 'ProdictName'])
谢谢
解决方案
您可以使用df.replace
,df.ffill()
和:df.groupby
df.groupby.agg
In [15]: df.TransactionId = df.TransactionId.replace('', np.nan)
In [19]: df.TransactionId = df.TransactionId.ffill()
In [21]: df1 = df.groupby('TransactionId', as_index=False).agg(','.join)
In [22]: df1
Out[22]:
TransactionId ProdictName
0 1 Item1,Item2,Item3
1 2 Item1,Item2
根据@sammywemmy 的单线:
In [26]: df.replace("", method="ffill").groupby("TransactionId", as_index=False).agg(",".join)
Out[26]:
TransactionId ProdictName
0 1 Item1,Item2,Item3
1 2 Item1,Item2
推荐阅读
- java - 如何在 Couchbase 中将属性数据类型从字符串转换为数组
- laravel - Laravel 强制 Http 获取资产
- powershell - 从漫游配置文件中删除所有 Microsoft 团队 .exe 引用
- google-bigquery - BigQuery 似乎在查询时将字段从日期更改为字节
- python - 在 python 中,使用 datetime 计算结果是错误的
- php - 如何从画廊提要中删除/忽略 .htaccess 文件
- android - Flutter Android 日志过多且冗长
- powershell - 用于识别 NVMe 驱动器的 Windows api
- javascript - Kagami/ffmpeg.js webm to images 得到 Unable to find a suitable output format for '%04d.jpg' 错误
- ms-access - 访问 2016 将多字段附加到一个字段