合并时保留csv文件的副本

问题描述

我正在尝试从两个csv文件创建一个数据集; 第一个csv文件具有更多属性(id,att1,att2,att3,标签) 第二个与第一个具有ID(id,att4,att5)

我正在尝试合并这些文件,而不对属性值进行分组,例如,第一个csv文件:

id,att1,att2,att3,label

1,5,20,30,0.2,10

2,13

1,50,20

2,0.5,80

1,4,10,90

1....

5....

3...

5....

第二个csv:

id,att4,att5

1,6

2,7,8

3,2

4,1,9

5,.....

结果:

id,label,13,8

1,80,90,6

1....

5....

3...

5....

请使用Talend,我真的尝试了很多可能性,是否有办法使用python(我是python的新手)

解决方法

您的第一个csv有问题,标题中只有5列,而数据行中只有6列。我将其更改为:

第一个csv:

id,id2,att1,att2,att3,label
1,5,20,30,0.2,10
2,13
1,50,20
2,0.5,80
1,4,10,90

第二个csv:

id,att4,att5
1,6
2,7,8
3,2
4,1,9

然后您可以使用merge

df1 = pd.read_csv('test.csv')
df2 = pd.read_csv('test2.csv')

df = pd.merge(df1,df2,on=['id'])
print(df)

   id  id2  att1  att2  att3  label  att4  att5
0   1    5    20    30   0.2     10     5     6
1   1    5    50    30   0.2     20     5     6
2   1    4    10    30   0.2     90     5     6
3   2    5    20    30   0.2     13     7     8
4   2    5    20    30   0.5     80     7     8

然后执行以下操作:

df.to_csv('merged.csv',index=False)

merged.csv:

id,label,6
1,90,13,8
2,80,8
,

如果要使用Talend解决此问题,这很容易。您需要为每个输入文件提供一个tFileInputDelimited,一个tMap,选择“ first.csv”作为主要流程,第二个作为查找。然后,在“ id”列上进行联接(左联接),并在输出中提取所需的字段(tFileOutputDelimited)。经典的tMap用法。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...