根据列值串联多个CSV文件,但多个csv文件具有相同的标题,但顺序不同

时间:2020-05-22 08:59:36

标签: python pandas csv data-manipulation data-cleaning

我正在清理一些数据。我有来自多个主题的数据,这些主题涉及多个跟踪。

SubNo Trails Score 
1       1      4
1       2      4
1       3      8
7       1      9
7       2      8
7       3      8
19
:
:

对于同一主题,我还有另一个数据集,用于SubNo的顺序无关

SubNo Trails Height 
19      1      100
19      2      400
19      3      810
7       1      911
7       2      811
7       3      811
20      1      222
20      2      222
20      3      789
1
1
:
:

我想在SubNo上加入这两个内容,这样最终每个主题的得分和身高都有一个CSV。

SubNo Trails Score Height 
1        1     4     198
1        2     4     209
1        3     8     289
2        1     :      :
2        2
2        3

在这里,我已基于subNo连接了相同的数据:因此,所有1的值在一起,主题2的所有值在一起等等。在我的两个csv文件中,主题的顺序不相同。 所以,我不想基于标题加入,而是基于特定的主题编号。在我的情况下,就是这样的1,2,17,...。 我应该怎么做? (我尝试过熊猫合并,它基于标头工作)。那不会做我想要的。

4 个答案:

答案 0 :(得分:0)

您的问题尚不清楚,但是根据我的理解,您正在尝试获取一个包含csv文件的csv文件,其中包含SubNo,Trails,Score和Height列(其中SubNo列为关键)

在这种情况下,您应该执行以下操作:

Container(
  child: Center(
    child: Row(
      children: <Widget>[
        Container(), //first
        Container(), //second
      ],
    ),
  ),
),

或者:

new_dataframe = left_dataframe.join(right_dataframe.set_index('SubNo'), on='SubNo', how='left')

答案 1 :(得分:0)

请检查pandas merge功能。您将有效地合并到SubNoTrials上。一个小的代码段是:

df1.merge(df2, how='inner')

完成此步骤后,您可以使用groupby()函数(可在pandas文档中找到)按主题进行切片,然后根据SubNO对行进行分组,然后将每个组另存为单独的CSV

答案 2 :(得分:0)

使用merge

print (pd.merge(df1, df2, on=['SubNo','Trails'],  how='left'))

SubNo  Trails  Score  Height
1       1      4      100
1       2      4      200
7       1      9      300

答案 3 :(得分:0)

Okey,所以我发现的解决方案是对subnum上的每个csv文件进行排序并进行连接。

df1.sort_values(by=['Subnum','Trials'], ascending=True)
df2..sort_values(by=['Subnum','Trials'], ascending=True)
pd.concat([df1,df2],axis=1)