Python:如何快速移除DataFrame原索引并设置新索引?
问题:移除DataFrame中的原索引列并设置新索引
我的代码如下:
df['sway_diff'] = df['selfLR'] - np.where(df.vote.eq(0), df['ClinLR'], df['DoleLR']) print(f"受访者的政治倾向与他们对意向候选人政治倾向印象的最大差异为 {df.sway_diff.max()}") num_of_diff = len(df[df['sway_diff'] == 6]) print(f"有 {num_of_diff} 位受访者的差异达到这个数值。") # 生成sway数据集 sway = df[df['sway_diff'].abs() >= 3] sway = sway.reset_index() sway.index += 1 print(f"{len(sway[sway['sway_diff'] < 0 ])} 位受访者更偏向自由派") print(f"{len(sway[sway['sway_diff'] > 0 ])} 位受访者更偏向保守派") print(f"{len(sway[sway['vote'] == 1])} 位受访者投票给多尔") print(f"{len(sway[sway['vote'] == 0])} 位受访者投票给克林顿")
从df中提取得到的新DataFrame sway 保留了原df的索引列(截图显示数据集中存在原索引列),请问如何移除这些原索引列并设置新的连续索引?
解决方法
你现在用reset_index()时,默认会把原索引存成一列(默认列名是index)。要直接丢弃原索引列,只需要给reset_index()加上drop=True参数,之后再调整新索引从1开始就行:
修改后的代码片段:
# 生成sway数据集 sway = df[df['sway_diff'].abs() >= 3] sway = sway.reset_index(drop=True) # 添加drop=True,丢弃原索引列 sway.index += 1 # 让新索引从1开始计数
也可以合并成一行代码:
sway = df[df['sway_diff'].abs() >= 3].reset_index(drop=True) sway.index = sway.index + 1
这样处理后,sway就不会保留原df的索引列,同时新索引会从1开始连续编号。
内容的提问来源于stack exchange,提问作者Silencieuse
相关产品推荐
相关产品推荐

