这可能是一个简单/重复的问题,但我可以找到/弄清楚如何做到这一点。
我有两个csv文件:
info.csv:
"Last Name", First Name, ID, phone, adress, age X [Total age: 100] |009076
abc, xyz, 1234, 982-128-0000, pqt,
bcd, uvw, 3124, 813-222-1111, tre,
poi, ccc, 9087, 123-45607890, weq,
然后
age.csv:
student_id,age_1
3124,20
9087,21
1234,45
我想根据 info.csv 中的“id
”和 age.csv <中的“student_id
”比较两个csv文件/ strong>并获取相应的“age_1
”数据并将其放入 info.csv 中的“age
”列。
所以最终的输出应该是:
info.csv:
"Last Name", First Name, ID, phone, adress, age X [Total age: 100] |009076
abc, xyz, 1234, 982-128-0000, pqt,45
bcd, uvw, 3124, 813-222-1111, tre,20
poi, ccc, 9087, 123-45607890, weq,21
我可以简单地将基于密钥的表格加入 new.csv ,但不能将数据放在列标题“age
”中。我使用“csvkit
”来做到这一点。
以下是我使用的内容:
csvjoin -c 3,1 info.csv age.csv > new.csv
答案 0 :(得分:3)
您可以使用Pandas
并使用info dataframe
数据更新age
。您可以将两个数据框的索引分别设置为ID
和student_id
,然后更新info dataframe
中的年龄列。之后,您重置索引,以便ID
再次成为一列。
from StringIO import StringIO
import pandas as pd
info = StringIO("""Last Name,First Name,ID,phone,adress,age X [Total age: 100] |009076
abc, xyz, 1234, 982-128-0000, pqt,
bcd, uvw, 3124, 813-222-1111, tre,
poi, ccc, 9087, 123-45607890, weq,""")
age = StringIO("""student_id,age_1
3124,20
9087,21
1234,45""")
info_df = pd.read_csv(info, sep=",", engine='python')
age_df = pd.read_csv(age, sep=",", engine='python')
info_df = info_df.set_index('ID')
age_df = age_df.set_index('student_id')
info_df['age X [Total age: 100] |009076'].update(age_df.age_1)
info_df.reset_index(level=0, inplace=True)
info_df
输出:
ID Last Name First Name phone adress age X [Total age: 100] |009076
0 1234 abc xyz 982-128-0000 pqt 45
1 3124 bcd uvw 813-222-1111 tre 20
2 9087 poi ccc 123-45607890 weq 21
答案 1 :(得分:1)
试试这个......
iframe.style.height="";
让我知道它是否有效或有什么不清楚。我使用了一个字典,因为如果你的文件很大,它应该更快,因为你只需要遍历age.csv中的数据一次。
可能有一种更简单的方法/已经实施的东西......但这应该可以解决问题。