繁体   English   中英

Pandas 在连接后重新计算索引

[英]Pandas recalculate index after a concatenation

我有一个问题,我通过沿行轴连接(垂直堆叠)来生成熊猫数据框。

每个组成数据帧都有一个自动生成的索引(升序数字)。

连接后,我的索引被搞砸了:它计数到 n(其中 n 是相应数据帧的形状 [0]),并在下一个数据帧处从零重新开始。

我正在尝试“根据当前订单重新计算索引”或“重新索引”(或者我认为)。 事实证明,这并不是DataFrame.reindex似乎正在做的事情。


这是我尝试做的:

train_df = pd.concat(train_class_df_list)
train_df = train_df.reindex(index=[i for i in range(train_df.shape[0])])

它因“无法从重复轴重新索引”而失败。 我不想改变我的数据的顺序......只需要删除旧索引并设置一个新索引,并保留行的顺序。

如果您的索引是自动生成的并且您不想保留它,您可以使用ignore_index选项。 `

train_df = pd.concat(train_class_df_list, ignore_index=True)

这将为您自动生成一个新索引,我猜这正是您所追求的。

垂直串联后,如果您得到[0, n)后跟[0, m)的索引,您需要做的就是调用reset_index

train_df.reset_index(drop=True)

(您可以使用inplace=True执行此操作)。


import pandas as pd

>>> pd.concat([
    pd.DataFrame({'a': [1, 2]}), 
    pd.DataFrame({'a': [1, 2]})]).reset_index(drop=True)
    a
0   1
1   2
2   1
3   2

这应该有效:

train_df.reset_index(inplace=True, drop=True) 

drop设置为True以避免在数据框中添加额外的列。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM