多个数据框包含一个相同的列
Multiple data frames contains one same column
我试图在同一列 (accident_no) 的基础上合并 7 个不同的数据框,但问题是某些数据框包含更多行和 (accident_no) 的重复,例如
table 1(意外)包含 200 个 accident_no(所有唯一),table 3 包含 196 个 accident_no(所有唯一)但 table 4 (Person) 包含 400 accident_no(一些重复),因为可能有多名乘客涉及同一事故,所以 accident_no 将相同,信息可用于分析。
我面临的问题是我尝试了连接、连接、合并,但答案达到了最高行数,而我得到的行数超过了 400。
到目前为止,我尝试了以下方法:
dfs = [df1,df2,df3,df5,df6,df7]
df_final = reduce(lambda left,right: pd.merge(left,right,on='ACCIDENT_NO', how = 'left'), dfs)
和
dfs = [df.set_index(['ACCIDENT_NO']) for df in [df1, df2, df3, df4, df5, df6, df7]]
print(pd.concat(dfs, axis=1).reset_index())
那么,我可能会得到超过 400 行还是我做错了什么?
谢谢
你可以试试;
table1 = table1.merge(table2,on = ['accident_no'],how = 'left')
并尝试其他表。
考虑在每个数据框中创建一个包含 groupby().cumcount()
的人数列,然后连接人员和事故标识符:
dfs = [
(df.assign(
PERSON_NO = lambda x: x.groupby(["ACCIDENT_NO"]).cumcount().add(1)
).set_index(["PERSON_NO", "ACCIDENT_NO"])
)
for df in [df1, df2, df3, df4, df5, df6, df7]
]
final_df = pd.concat(dfs, axis=1).reset_index()
我试图在同一列 (accident_no) 的基础上合并 7 个不同的数据框,但问题是某些数据框包含更多行和 (accident_no) 的重复,例如
table 1(意外)包含 200 个 accident_no(所有唯一),table 3 包含 196 个 accident_no(所有唯一)但 table 4 (Person) 包含 400 accident_no(一些重复),因为可能有多名乘客涉及同一事故,所以 accident_no 将相同,信息可用于分析。
我面临的问题是我尝试了连接、连接、合并,但答案达到了最高行数,而我得到的行数超过了 400。
到目前为止,我尝试了以下方法:
dfs = [df1,df2,df3,df5,df6,df7]
df_final = reduce(lambda left,right: pd.merge(left,right,on='ACCIDENT_NO', how = 'left'), dfs)
和
dfs = [df.set_index(['ACCIDENT_NO']) for df in [df1, df2, df3, df4, df5, df6, df7]]
print(pd.concat(dfs, axis=1).reset_index())
那么,我可能会得到超过 400 行还是我做错了什么?
谢谢
你可以试试;
table1 = table1.merge(table2,on = ['accident_no'],how = 'left')
并尝试其他表。
考虑在每个数据框中创建一个包含 groupby().cumcount()
的人数列,然后连接人员和事故标识符:
dfs = [
(df.assign(
PERSON_NO = lambda x: x.groupby(["ACCIDENT_NO"]).cumcount().add(1)
).set_index(["PERSON_NO", "ACCIDENT_NO"])
)
for df in [df1, df2, df3, df4, df5, df6, df7]
]
final_df = pd.concat(dfs, axis=1).reset_index()