使用以下内容读取CSV数据文件后
import pandas as pd
df = pd.read_csv('data.csv')
print df.shape
我得到DataFrame 99行(索引)长:
(99, 2)
要清理DataFrame,我继续使用dropna()方法将其减少到33行:
df = df.dropna()
print df.shape
打印:
(33, 2)
现在,当我迭代列时,它打印出所有99行,就像它们没有被删除一样:
for index, value in df['column1'].iteritems():
print index
给了我这个:
0
1
2
.
.
.
97
98
99
dropna()
似乎只是使数据“隐藏”。当我迭代DataFrame时,隐藏的数据会返回。如何确保从DataFrame中删除已删除的数据而不是隐藏?
答案 0 :(得分:3)
您已经保留了行标签,因此最后一行标签仍为99
,这让您感到困惑。
示例:
In [2]:
df = pd.DataFrame({'a':[0,1,np.NaN, np.NaN, 4]})
df
Out[2]:
a
0 0
1 1
2 NaN
3 NaN
4 4
调用dropna
后,将保留索引行标签:
In [3]:
df = df.dropna()
df
Out[3]:
a
0 0
1 1
4 4
如果要重置以使它们连续,请调用reset_index(drop=True)
以指定新索引:
In [4]:
df = df.reset_index(drop=True)
df
Out[4]:
a
0 0
1 1
2 4
答案 1 :(得分:0)
或者您也可以调整参数,例如:
Df = df.dropna(inplace=True)