我有两个csv文件: TEST1
A B
1 a
2 b
3 c
4 d
5 e
TEST2
A C D B
3 x 25 101
2 y 0.35 11
1 z 0.45 111
6 k 0.55 1101
7 l 0.65 1010
我想在= A上合并它们但我只需要在最终文件中的列test1.A,B和test2.D,B。由于这两个文件都具有相同的列名B,因此需要在连接时重命名。输出文件应如下所示:
A B D B1
1 a 0.45 1110
2 b 0.35 1010
3 c 25 1011
4 d
5 e 0.55
6 0.65 1000
7 1111
其中B1对应于表2中的B列。 test1和test2中的两个B列都不相同。
import pandas
csv1 = pandas.read_csv('test1.csv',dtype='unicode')
csv2 = pandas.read_csv('test2.csv',dtype='unicode')
merged = pandas.merge(csv1[list('AB')],csv2[list('DB')], on='A',how="outer")
merged.to_csv("outputtest.csv", index=False)
这给了我错误:
KeyError:“['B']不在索引”
中
答案 0 :(得分:1)
您可以在C
中drop
列csv2
,然后使用参数suffixes
merge
和string
空merged = pd.merge(csv1,
csv2.drop('C', axis=1),
on='A',
how="outer",
suffixes=('','1')).fillna('')
print (merged)
A B D B1
0 1.0 a 0.45 111
1 2.0 b 0.35 11
2 3.0 c 25 101
3 4.0 d
4 5.0 e
5 6.0 0.55 1101
6 7.0 0.65 1010
:
csv
如果在A
中有多列,则可以在此解决方案列merged = pd.merge(csv1[['A','B']],
csv2[['A','D','B']],
on='A',
how="outer",
suffixes=('','1')).fillna('')
print (merged)
A B D B1
0 1.0 a 0.45 111
1 2.0 b 0.35 11
2 3.0 c 25 101
3 4.0 d
4 5.0 e
5 6.0 0.55 1101
6 7.0 0.65 1010
中使用仅需要子集的列和需要用于连接的列:
merged = pd.merge(csv1[list('AB')],
csv2[list('ADB')],
on='A',
how="outer",
suffixes=('','1')).fillna('')
print (merged)
A B D B1
0 1.0 a 0.45 111
1 2.0 b 0.35 11
2 3.0 c 25 101
3 4.0 d
4 5.0 e
5 6.0 0.55 1101
6 7.0 0.65 1010
或者:
select distinct status from t_table where file_id = 310012