我有两个csv文件如下所示
第一个文件:
abTestGroup,platform,countryCode,userId
group_control,ios,GB,aaaaaaaaaaa group_control,ios,GB,aaaaaaaaaaa
group_control,ios,GB,aaaaaaaaaaa group_control,ios,GB,aaaaaaaaaaa
group_test,android,GB,ccccccccccc
第二个文件:
dateActivity,productId,cost,userId
2018-03-02,specialpack,0.198,aaaaaaaaaaa
2018-03-03,specialpack,0.498,aaaaaaaaaaa
2018-03-02,specialpack,0.398,bbbbbbbbbbb
2018-03-02,specialpack,0.998,ccccccccccc
在这种情况下,它们有一个共同点,那就是userId
我想合并这些文件并使用Python(Pandas)创建父子关系
我使用了以下脚本:
import pandas as pd
a = pd.read_csv('PARENT.csv', encoding = "UTF-8", mangle_dupe_cols=True, usecols=['abTestGroup','platform','countryCode','userId'])
b = pd.read_csv("CHILD.csv")
merged = b.merge(a, on='userId', how='inner')
merged = merged.drop_duplicates()
merged.to_csv("final_output.csv", index=False)
为了获得以下输出:
dateActivity,productId,cost,userId,abTestGroup,platform,countryCode
2018-03-02,specialpack,0.198,aaaaaaaaaaa,group_control,ios,GB
2018-03-03,specialpack,0.498,aaaaaaaaaaa,group_control,ios,GB
2018-03-02,specialpack,0.998,ccccccccccc,group_test,android,GB
userId
'bbbbbbbbbbb'不会出现在最终输出中,因为它不存在于两个文件中。如何包含不匹配的行(unmatcheduserIds
)并将“Other”值赋给单元格
join方法适用于您的案例:
因为您正在执行内部联接,所以只返回匹配的
userIds
。为了返回不匹配的userIds
,您可以根据下面语句中的连接顺序执行右/左连接如果
b
包含bbbbbbbbbbb
,则执行左连接。如果a
包含bbbbbbbbbbb
,那么您将进行正确的连接请参阅下面的连接类型
相关问题 更多 >
编程相关推荐