gpt4 book ai didi

python - 将两个 csv 文件与自定义列合并

转载 作者:太空宇宙 更新时间:2023-11-03 16:25:27 25 4
gpt4 key购买 nike

我有两个 csv 文件:测试1

A   B 
1 a
2 b
3 c
4 d
5 e

测试2

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'] not in index"

最佳答案

您可以drop csv2 中的 C 列,然后 merge带有参数后缀和最后一个fillna通过空字符串:

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

关于python - 将两个 csv 文件与自定义列合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38025512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com