在我的初始数据中,有一些有问题的数据,我想让它们一个人留下,所以我做df = df[(df['direction'] < 100) & (df['speed'] < 400)]
。
但是,当我尝试访问df.ix[100]
之类的单个条目时,数据可能是in-accessible
,因为它在条件选择中是超选的。所以我想重新索引数据,我该怎么做?
在播放了一段时间之后,我意识到初始查询df = df[(df['direction'] < 100) & (df['speed'] < 400)]
似乎没有创建新变量,而是创建原始数据的视图,这让我更加困惑。
那么,如何在查询后重新索引数据?或者我应该drop
代替?
答案 0 :(得分:3)
如果我正确理解了您的问题,您可以使用.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