python - 如何从 DataFrame 中永久删除数据

标签 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 中移除,而不是只是隐藏起来?

最佳答案

您对行标签已被保留因此最后一行标签仍然是 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/

相关文章:

python - 单击selenium python后从菜单中选择

python - Pandas:基于字典分割和编辑文件

python - 有效地将一系列集成到 pandas 数据框中

python - 在 pandas 中设置现有 DataFrame 的 MultiIndex

r - 如何用第二个表 R 中的值替换变量?

python - 以编程方式将 Pandas 数据框切片

python - 在多列上使用 pandas groupby 函数

c# - 如何使用 IronPython 将参数传递给 Python 脚本

android - android (kivy) 上的 Python - 某些操作的速度瓶颈?

python - 如何在使用 groupby() 时忽略 pandas 数据框中具有唯一索引的几行?