读取 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 中移除,而不是只是隐藏起来?
最佳答案
您对行标签已被保留因此最后一行标签仍然是 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
关于python - 如何从 DataFrame 中永久删除数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40076176/