首页 > 解决方案 > pandas concat ValueError - 传递的值与索引暗示的不匹配

问题描述

我正在尝试将 2 系列连接成这样的数据框

c_dist_df = pd.concat([d.value_counts(), v.value_counts()], axis=1, sort=True)

我得到了错误 -

ValueError:传递值的形状为 (2, 7),索引暗示 (2, 5)

这就是我的输入的series样子 -

d.value_counts()
(-0.001, 8.0]     2121
(127.0, 215.0]    2017
(36.0, 127.0]     2006
(215.0, 695.0]    2003
(8.0, 36.0]       1914
Name: X, dtype: int64

v.value_counts()
(215.0, 695.0]    204
(36.0, 127.0]     204
(127.0, 215.0]    202
(-0.001, 8.0]     196
(8.0, 36.0]       177
Name: X, dtype: int64

形状和索引值相同 -

np.shape(d.value_counts()) //returns (5,)
np.shape(v.value_counts()) //returns (5,)

我无法弄清楚传递值(2、7)的形状如何。有人可以帮忙吗?

我正在使用Python version 3.7.0Pandas version 0.23.4

标签: python-3.xpandasnumpy

解决方案


您需要指定join_axes参数。尝试:

d_val = d.value_counts()
v_val = v.value_counts()

pd.concat([d_val, v_val], axis=1, join_axes=[d_val.index], sort=True)

其他一些选择:

  1. 使用join而不是concat. 但是由于join只能在数据帧上使用,因此您必须在加入之前将两个系列都转换为数据帧。

    d_val.to_frame(name='d_vc').join(v_val.to_frame(name='v_vc'))
    
  2. 在初始化数据框时将两个系列都分配为列:

    pd.DataFrame(dict(d_vc = d_val, v_vc = v_val)).reset_index()
    

推荐阅读