如何永久删除DataFrame中的数据

时间:2016-10-16 22:28:45

标签: python pandas dataframe

使用以下内容读取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中删除已删除的数据而不是隐藏?

2 个答案:

答案 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)