从Pandas数据框中截断所有行

6

我需要测试代码在DataFrame没有行的情况下能否正常工作。在SQL中,您可以使用truncate命令清除表中的所有行。我找到了Pandas的truncate命令,但无法删除最后一行。我尝试了这样做:

df.truncate(after=0, before=0)

...但它留下了第0行。有什么想法吗?


你尝试过 before=1 吗? - Ctrl-C
我刚才这样做 - 如果你没有“after”,它只会删除第0行并保留其他所有内容,如果我将“after”留在那里,我会得到ValueError: Truncate: 0 must be after 1 - cardamom
3个回答

13

你可以使用df.head(0)

In [3]: df = pd.DataFrame([{'foo': 1, 'bar': 2}, {'foo': 3, 'bar': 4}])

In [4]: df
Out[4]: 
   bar  foo
0    2    1
1    4    3

In [5]: df.head(0)
Out[5]: 
Empty DataFrame
Columns: [bar, foo]
Index: []

9

使用 drop 删除所有索引值:

df1 = df.drop(df.index)

或者只用 columns 参数进行创建 DataFrame:

df1 = pd.DataFrame(columns=df.columns)

示例:

df = pd.DataFrame({'a':list('ab'), 'b':range(2)})

df1 = df.drop(df.index)
print (df1)
Empty DataFrame
Columns: [a, b]
Index: []

6
你的代码 truncate 在我这边能正常工作。
df.truncate(before=-1, after=-1)
Out[835]: 
Empty DataFrame
Columns: [A, B, C]
Index: []

正在使用 pd.__version__'0.19.2' 版本。 - cardamom
@cardamom pd.__version__:'0.22.0' - BENY
1
@cardamom请确保你没有使用负数索引哦,伙计:-) - BENY

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