我在将2个CSV合并到新数据集中时遇到问题。到目前为止,我已经将它们合并。假设我有csv1和csv2。我从csv1创建了一个"df",并将csv2与一个特定列合并。但我的问题是:
我需要在df中创建一个新列(例如"new_foo",因为两个CSV都有相同的列名,但数据不同,所以不可能合并两个foo列(,并将合并的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 | >2ew_foo | |
---|---|---|---|---|
1 | 'bla1' | 'qwer' | >12 | |
1 | 'bla2' | 'swd' | >td>34||
1 | 'la3' | 'asdf'|||
2 | 'bla4' | 'izer' | //tr>
您可以使用Pandas方法连接列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
参考文献:
- Pandas加入文档
我终于照Arsho说的做了,一切都很顺利。我没有使用.merge((方法,而是使用.join((方法根据需要连接CSV。