合并 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 method 列 X
上的数据框。
代码:
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。
我在将 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 method 列 X
上的数据框。
代码:
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。