合并 2 个数据集 python(已关闭)

Merge 2 dataset python (Closed)

我在将 2 个 CSV 合并到新数据集中时遇到问题。到目前为止,我已经合并了它们。 假设我有 csv1 和 csv2。我从 csv1 创建了一个 'df' 并将 csv2 与特定列合并。但这是我的问题:

我需要在 df 中创建一个新列(例如 'new_foo',因为两个 CSV 具有相同的列名,但数据不同,因此无法合并 2 个 foo 列) 并关联来自 merged csv2 列 X 的两列。这是因为在 csv1 中,公共列是 X.

当前输入:

import pandas as pd

df = pd.read_csv(csv1)
csv2_df = pd.read_csv(csv2)
csv2_column_x=csv2_df['x']
new_foo=csv2_df['foo']
df['new_foo']
df = df.merge(csv2_column_x, how="outer").merge(new_foo, how="outer")

当前输出:

X Y foo new_foo
1 'bla1' 'qwer' 12
1 'bla2' 'aswd' 34
1 'bla3' 'asdf'
2 'bla4' 'azer'

期望的输出:

X Y foo new_foo
1 'bla1' 'qwer' 12
1 'bla2' 'aswd' 12
1 'bla3' 'asdf' 12
2 'bla4' 'azer' 34

这是我的 csv1:

X Y foo
1 'bla1' 'qwer'
1 'bla2' 'aswd'
1 'bla3' 'asdf'
2 'bla4' 'azer'

这是我的 csv2:

X foo
1 12
2 34

注意:CSV 文件的行数不同。

您可以使用 Pandas join methodX 上的数据框。

代码:

import pandas as pd

csv1_df = pd.read_csv("csv1.csv")
csv2_df = pd.read_csv("csv2.csv")
merged = csv1_df.join(csv2_df.set_index('X'), on='X', lsuffix='_caller', rsuffix='_other')
print(merged)

输出:

   X       Y foo_caller  foo_other
0  1  'bla1'     'qwer'         12
1  1  'bla2'     'aswd'         12
2  1  'bla3'     'asdf'         12
3  2  'bla4'     'azer'         34

csv1.csv:

X,Y,foo
1,'bla1','qwer'
1,'bla2','aswd'
1,'bla3','asdf'
2,'bla4','azer'

csv2.csv:

X,foo
1,12
2,34

参考文献:

我终于按照 Arsho 告诉我的去做了,而且效果很好。我没有使用 .merge() 方法,而是使用 .join() 方法根据需要连接 CSV。