Python和Pandas新手,欢迎任何帮助或指导。
我正在使用两个不同的csv,roster.csv
和assignment.csv
,字段结构如下:
roster.csv
:
first_name, last_name, user_id, user
John, Doe, 0001, abcd
Jane, Doe, 0002, efgh
John, Smith, 0003, ijkl
assignment.csv
:
user, text
abcd, text1
efgh, text2
ijkl, text3
当user
字段匹配时,我想使用roster.csv
在assignment.csv
中创建新列,添加first_name
,last_name
和user_id
字段。输出如下所示:
user, text, first_name, last_name, user_id
abcd, text1, John, Doe, 0001
efgh, text2, Jane, Doe, 0002
ijkl, text3, John, Smith, 0003
到目前为止,我能够创建一个输出,为上面的字段写入标题,但没有写入任何数据。下面是目前为止的工作代码:
import pandas as pd
df_roster = pd.read_csv('roster.csv')
df_assignment = pd.read_csv('assignment.csv')
df3 = pd.concat([df_assignment, df_roster[~df_roster.user.isin(df_assignment.user)]])
对如何进行有什么见解吗?感谢所有的帮助。
为什么不使用merge呢?
这是给你的指南。https://pandas.pydata.org/pandas-docs/stable/user_guide/merging.html使用merge
,而不是concat
,这确保键将对齐:
df_roster.merge(df_assignment, left_on='user_id', right_on='user')