在我的初始数据中,有一些有问题的数据,我不想理会它们,所以我这样做 df = df[(df['direction'] < 100) & (df['speed'] < 400)]
.
但是,当我尝试访问像 df.ix[100]
这样的单个条目时,数据可能是in-accessible
,因为它在条件选择中被淘汰。所以我想重新索引数据,我该怎么做?
玩了一段时间后,我意识到最初的查询 df = df[(df['direction'] < 100) & (df['speed'] < 400)]
似乎不是创建新变量而是原始数据的 View ,这让我更加困惑。
那么,查询后如何重新索引数据呢?或者我应该drop
相反?
最佳答案
如果我正确理解您的问题,您可以使用 .reset_index(drop=True)
将索引重置为默认连续整数。
import pandas as pd
import numpy as np
# sample data
# ====================================
np.random.seed(0)
df = pd.DataFrame(np.random.randn(5,2), columns=list('AB'))
df
A B
0 1.7641 0.4002
1 0.9787 2.2409
2 1.8676 -0.9773
3 0.9501 -0.1514
4 -0.1032 0.4106
# ===================================
df1 = df[df['B']>0] # cannot access df1.ix[2]
A B
0 1.7641 0.4002
1 0.9787 2.2409
4 -0.1032 0.4106
df2 = df[df['B']>0].reset_index(drop=True) # df2.ix[2] works fine
A B
0 1.7641 0.4002
1 0.9787 2.2409
2 -0.1032 0.4106
关于Python 和 Pandas : Re-indexing after selecing entries,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31912968/