python - 查找具有匹配值的所有行,将所有匹配值输出到同一行
问题描述
我从不使用 python,所以不知道如何解决这个问题。我有一个具有以下格式的 excel/csv 文件。我需要找到所有具有匹配 IN_FID 值的行,并将这些行输出到新文件的同一行中。
我的文件.csv:
ROUTE_NAME CURR_VOL IN_FID NEAR_RANK
test11 test11 1 test11
test12 test12 1 test12
test2 test2 2 test2
test3 test3 3 test3
test31 test 3 test31
期望的输出:
IN_FID ROUTE_NAME1 NEAR_RANK1 ROUTE_NAME2 NEAR_RANK2
1 test11 test11 test12 test12
2 test2 test2 null null
3 test3 test3 test31 test31
我一开始只是尝试用 python 操作 csv,但我想知道是否有像 pandas 这样的库会更好用?
#!/usr/bin/python
import csv
profile_to_search = input()
with open('myfile.csv', 'rt') as f:
reader = csv.reader(f, delimiter=',')
for row in reader:
if profile_to_search == row[2]:
print(row)
我走了这么远,然后意识到我不知道自己在做什么。
解决方案
只是一个cumcount
那么应该是简单的pivot
问题
df['Key']=df.groupby('IN_FID').cumcount()+1
s=df.pivot_table(index='IN_FID',columns='Key',values=['ROUTE_NAME','NEAR_RANK'],aggfunc='first')
s=s.sort_index(level=1,axis=1)
s.columns=s.columns.map('{0[0]}_{0[1]}'.format)
s
NEAR_RANK_1 ROUTE_NAME_1 NEAR_RANK_2 ROUTE_NAME_2
IN_FID
1 test11 test11 test12 test12
2 test2 test2 None None
3 test3 test3 test31 test31
推荐阅读
- qt - QT 优化程序以特定时间间隔执行计算(信号和 QTimer 已过)
- perforce - 如何在 P4v 中更改我的工作区名称?
- azure - Azure AD B2C 自定义策略 - 仅使用 String.Format 删除连字符
- java - Hibernate实体级联删除父或子
- c# - C# 调用 PowerShell New-Session 不返回结果
- ios - Apple 在导航堆栈中使用的后退按钮图形在哪里?
- wakanda - 在 Wakanda 2.4+ 中提供原型页面
- python - request.FILES 在 Django 上空上传图片
- python-3.x - 解析数组中的字典键值
- laravel - 使用微服务制作 web laravel 应用程序