【问题标题】:concat dataframes with different index连接具有不同索引的数据帧
【发布时间】:2018-12-19 08:00:35
【问题描述】:

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

第一个.csv

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

秒.csv

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

当我尝试并排添加两个 csv 时,第二个 csv 的列在第一个 csv 行之前为空,并且仅连接。 结果来了:

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')

为什么我会遇到这个问题。 请帮忙解决这个问题 谢谢 桑达尔

【问题讨论】:

  • df3 = pd.concat([df1, df2], axis=1) 这应该可以。我无法重现您的问题。

标签: python pandas csv dataframe


【解决方案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 

【讨论】:

  • OP 已经执行了该操作。问题在于索引。 df2 的索引与 df1 不同
  • @meW,恕我直言,OP 没有以正确的格式输出,所以我添加了这个解决方案。
  • 我同意您的解决方案。但是,OP 已经应用了pd.concat([df1,df2], axis=1),正如可以看到的那样,但由于索引不同,OP 没有得到预期的答案。
  • @meW,肯定可能是 OP 没有正确创建 df,所以我现在编辑了解决方案,如何正确创建 df 并正确获得输出。
  • @sundarr,您可以尝试在没有索引列的情况下正确创建 df 并尝试一次 df(contact 命令?
【解决方案2】:

使用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 |
+---+-------+------+------+------+------+------+

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-16
    • 2016-07-31
    • 2019-11-02
    • 2020-02-21
    • 1970-01-01
    • 2020-05-27
    • 2020-01-06
    • 1970-01-01
    相关资源
    最近更新 更多