python - 重塑/透视具有重复键值的键值对数据文件
问题描述
我发现了许多类似标题的问题,但找不到我正在寻找的确切问题。
我有一个这样的数据文件:
title1:A1
title2:A2
title3:A3
title4:A4
title5:A5
title1:B1
title2:B2
title3:B3
title4:B4
title5:B5
title1:C1
title2:C2
title3:C3
title4:C4
title5:C5
title1:D1
title2:D2
title3:D3
title4:D4
title5:D5
使用熊猫我想得到一张这样的桌子:
title1 title2 title3 title4 title5
0 A1 A2 A3 A4 A5
1 B1 B2 B3 B4 B5
2 C1 C2 C3 C4 C5
3 D1 D2 D3 D4 D5
我的尝试:
import pandas as pd
import numpy as np
df = pd.read_csv('colon_sep.txt',header=None,sep=':')
df.columns = ['title','id']
# for loop method
df2 = pd.DataFrame()
for t in df.title.unique():
df2[t] = df[df.title == t]['id'].values
df2
# HOW TO GET THIS BY Advanced methods?
我能够使用 for 循环获得所需的表。
有没有更好的方法使用 groupby 或任何其他高级方法?
解决方案
您可以稍微简化一下代码,以pivot
在最后包含一个调用以提高效率:
df = pd.read_csv('colon_sep.txt', sep=':', header=None)
df.insert(2, 2, df.groupby(0).cumcount())
df = df.pivot(index=2, columns=0, values=1)
print(df)
0 title1 title2 title3 title4 title5
2
0 A1 A2 A3 A4 A5
1 B1 B2 B3 B4 B5
2 C1 C2 C3 C4 C5
3 D1 D2 D3 D4 D5
推荐阅读
- python - AWS Lambda 层中的 Geopandas “导入 numpy C 扩展失败”
- javascript - 用纯 JavaScript 写出一个 Like 按钮功能
- python - 从空列表动态更新 Tkinter ComboBox
- c - 在我的 C 程序中使用 Autotools 时出现“未定义的对 gtk 的引用...”
- c# - 为什么当我使用 async/await 登录时“主”表单没有响应?
- android - 使用 AndroidX Paging 进行非 UI 分页(例如在服务中)
- svn - SVN 权限错误尝试提交
- ios - 如何将我的课程的一个 tableView 链接到另一个 tableView 存储每个课程不同的笔记?
- c# - Fluent Assertions - 空字符串和空字符串比较
- mysql - 错误:ER_PARSE_ERROR:您的 SQL 语法有错误;用于多次插入