【问题标题】:Unable to concatenate dataframes correctly无法正确连接数据帧
【发布时间】:2019-10-31 03:49:54
【问题描述】:

dfs 是:

StockCode
84077K     32.694876
23005J     28.248135
85099BJ    24.581063
23084M     24.078340
85099FC    19.276526
Name: 127269, dtype: float64

其中 127269 是 CustomerID

dfc 是:

    CustomerID
0       127269

我正在尝试使用以下命令连接 dfs 和 dfc:

final_frame = pd.concat([dfc, dfs], axis=1)

我得到的结果是:

         CustomerID      127269
     0     127269.0         NaN
84077K          NaN   32.694876

而我想要的输出是:

    CustomerID      StockCode
  0     127269         84077K

print (dfs) gives me:

StockCode
84077K    32.694876
Name: 127269, dtype: float64

print(dfc) gives me:
       CustomerID
0      127269

有人可以建议如何实现这个结果吗?

【问题讨论】:

  • 前提似乎有缺陷,您可以通过首先设置索引来对齐它们:dfc.index = dfs.index[:len(dfc)] concat 然后应该可以工作。
  • 您的方法给了我这样的结果:CustomerID 127269 StockCode 84077K 127269 32.694876 StockCode 现在已成为索引,这不是我们想要的。

标签: python pandas dataframe concatenation


【解决方案1】:

我做了以下事情:

dfs = dfs.reset_index()

得到以下输出:

dfs

StockCode   127269
0   84077K  32.694876

dfs1 = dfs['StockCode']

final_frame = pd.concat([dfc, dfs1], axis=1)

final_frame
    CustomerID  StockCode
0       127269  84077K

【讨论】:

    【解决方案2】:

    您的问题是 dfs 是一个系列而不是数据框,并且您想与其索引的第一个值连接。所以你应该使用:

    final_frame = pd.concat([dfc, dfs.reset_index().iloc[[0], [0]]], axis=1)
    

    它应该给出你预期的输出。

    【讨论】:

    • 不幸的是,它没有:它给了我这样的东西 CustomerID StockCode 84077K 127269.0 NaN 0 NaN 84077K
    • @morelloking:能否请您显示print(dfs)print(dfc) 的输出。
    • 我在问题中添加了 print (dfs) 和 print (dfc) 输出
    • 我们一步一步来。什么给了dfs.reset_index()dfs.reset_index().iloc[[0],[0]]
    • 好的,我已经找到解决方案了,我现在就贴出来
    猜你喜欢
    • 1970-01-01
    • 2021-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-07
    • 2021-05-08
    • 2021-10-07
    • 2019-06-27
    相关资源
    最近更新 更多