Pandas Concat 增加行数

新手上路,请多包涵

我正在连接两个数据帧,所以我想将一个数据帧定位到另一个数据帧。但首先我对初始数据框做了一些转换:

 scaler = MinMaxScaler()
real_data = pd.DataFrame(scaler.fit_transform(df[real_columns]), columns = real_columns)

然后连接:

 categorial_data  = pd.get_dummies(df[categor_columns], prefix_sep= '__')
train = pd.concat([real_data, categorial_data], axis=1, ignore_index=True)

我不知道为什么,但行数增加了:

 print(df.shape, real_data.shape, categorial_data.shape, train.shape)
(1700645, 23) (1700645, 16) (1700645, 130) (1703915, 146)

发生了什么以及如何解决问题?

如您所见, train 的列数等于 real_data 和 categorial_data 列的总和

原文由 Rocketq 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

问题在于,有时当您对单个数据框对象执行多个操作时, 索引会保留在内存中。所以使用 df.reset_index() 将解决你的问题。

原文由 saket ram 发布,翻译遵循 CC BY-SA 4.0 许可协议

在对数据帧执行某些操作时,其维度不会改变索引,因此我们需要对数据帧执行 reset_index 操作。

对于串联,您可以这样做:

 result_df = pd.concat([first_df.reset_index(drop=True), second_df.reset_index(drop=True)], axis=1)

原文由 Lucky Suman 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题