如何删除数据框中的所有行?

50

我想要删除数据框中的所有行。

我这样做的原因是为了能够通过迭代循环重建数据框。我想要从完全空白的数据框开始。

或者,如果可能的话,我可以从仅包含列/类型信息的数据框创建一个空的 df。

6个回答

114

如果您有一个现有的DataFrame,希望清空它而不用重新创建列信息,可尝试以下方法:

df_empty = df[0:0]

df_empty 是一个没有行但列结构与 df 相同的 DataFrame。


7
您还可以使用head方法:
df_empty = df.head(0)

7
后一种方法是可行的,而且强烈建议使用——逐行“插入”行会非常低效。操作示意如下:
>>> import numpy as np
>>> import pandas as pd
>>> index = np.arange(0, 10)
>>> df = pd.DataFrame(index=index, columns=['foo', 'bar'])
>>> df
Out[268]: 
   foo  bar
0  NaN  NaN
1  NaN  NaN
2  NaN  NaN
3  NaN  NaN
4  NaN  NaN
5  NaN  NaN
6  NaN  NaN
7  NaN  NaN
8  NaN  NaN
9  NaN  NaN

6

如果你已经有一个包含你想要的列的DataFrame,那么可以用列表生成式提取列名,然后用这些列名创建一个空的DataFrame。

# Creating DataFrame from a CSV file with desired headers
csv_a = "path/to/my.csv"
df_a = pd.read_csv(csv_a)

# Extract column names into a list
names = [x for x in df_a.columns]

# Create empty DataFrame with those column names
df_b = pd.DataFrame(columns=names)

1
我认为这不会包括列类型信息。 - John Vandivier

4
df.drop(df.index,inplace=True) 

这行代码将删除所有行,但保留列名。


当您不想重新创建变量时,这实际上是一种很好的方法。如果您在函数内部执行此操作并希望避免UnboundLocalError,则可能会出现问题。 - Arnaud

0

旧帖子。但我找到了另一种方法

df_final=df_dup[0:0].copy(deep=True)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接