连接具有不同索引的数据帧

时间:2018-12-19 08:00:36

标签: python pandas csv dataframe

我正在尝试添加两个csv文件并转换为csv。

first.csv

 index val1 val2 val3
    0      19    29  30
    1      29    54  30
    2      87    98  90

second.csv

val4 val5 val6
19    29  30
29    54  30
87    98  90

当我尝试并排添加两个csv时,第二个csv的列在第一个csv行之前为空,并且仅是简明的。 Resule来了:

index val1 val2 val3   val4 val5 val6
0      19    29  30
1      29    54  30
2      87    98  90

3                       19    29  30
4                       29    54  30
5                       87    98  90

预期结果:

index val1 val2 val3   val4 val5 val6
0      19    29  30     19    29  30
1      29    54  30     29    54  30
2      87    98  90     87    98  90

我有df1和df2那个csv的两个数据帧。

df3 = pd.concat([df1, df2], axis=1)
df3.to_csv('test1.csv',',',dtype='unicode8')

为什么我遇到这个问题。 请对此问题提供帮助谢谢, 桑达尔

2 个答案:

答案 0 :(得分:1)

通过以下操作创建数据帧:

已复制以下内容:

val1 val2 val3
19    29  30
29    54  30
87    98  90
df1=pd.read_clipboard();

val4 val5 val6
19    29  30
29    54  30
87    98  90
df2=pd.read_clipboard();

请您尝试以下。

import pandas as pd
pd.concat([df1,df2], axis=1)

输出如下。

  val1  val2 val3  val4  val5  val6
0  19    29   30    19    29    30 
1  29    54   30    29    54    30 
2  87    98   90    87    98    90 

答案 1 :(得分:0)

使用df2.reset_index(drop=True, inplace=True)并照常进行。

示例:

df1 = pd.DataFrame([[1, 2, 3],
                   [4, 5, 6],
                   [7, 8, 9]], columns=['val1', 'val2', 'val3'])
df1


+---+--------+------+------+
|   |   val1 | val2 | val3 |
+---+--------+------+------+
| 0 |      1 |    2 |    3 |
| 1 |      4 |    5 |    6 |
| 2 |      7 |    8 |    9 |
+---+--------+------+------+

df2 = pd.DataFrame([[1, 2, 3],
                   [4, 5, 6],
                   [7, 8, 9]], columns=['val4', 'val5', 'val6'], index=[2, 9, 8])
df2


+----+------+------+------+
|    | val4 | val5 | val6 |
+----+------+------+------+
| 2 |    1 |    2 |    3 |
| 9 |    4 |    5 |    6 |
| 8 |    7 |    8 |    9 |
+----+------+------+------+

df2.reset_index(drop=True, inplace=True)
pd.concat([df1, df2], axis=1).to_csv('saveit.csv')


+---+-------+------+------+------+------+------+
|   |  val1 | val2 | val3 | val4 | val5 | val6 |
+---+-------+------+------+------+------+------+
| 0 |     1 |    2 |    3 |    1 |    2 |    3 |
| 1 |     4 |    5 |    6 |    4 |    5 |    6 |
| 2 |     7 |    8 |    9 |    7 |    8 |    9 |
+---+-------+------+------+------+------+------+