在 Python Pandas 中将数据帧/列清零的最快方法

5

在 Pandas 数据框中,是否有一种更快的方式将一列数据清零,而不必像这样遍历整个数据框(其中 A、B 和 C 是列名):

while x < Framelength
   dg.iloc[x, A] = 0
   dg.iloc[x, B] = 0
   dg.iloc[x, C] = 0
   x+=1

如果这样做更快的话,我可以接受将整个数据框清零。

6个回答

2

检查

cols=[...]
df.loc[:, cols]=0

1
要通过调用列名将列中所有行归零,您可以执行以下操作:
df["A"] = 0
df["B"] = 0

如果您想将整个DataFrame清零,我认为以下方法应该是相当高效的:
for c in df:
    df[c].values[:] = 0

1
刚刚检查了一下,虽然 df.values = 0 不起作用,但是只使用 df.values[:] = 0 就可以有效地将整个数据框清零! - Marcos Tidball

1
您可以将整个数据框清零:

df[df.columns] = 0

或者指定一个列的列表(可迭代对象):
cols = list("ABC")
df[cols] = 0

df[df.columns] = 0 工作正常,可以将整个数据框清零。但是 df[cols] = 0 并不能将整列清零。 - DyTech

0
我发现这个方法非常有效,而且打字量较少:
```python df[:] = 0 ```

0
我会采用简单的方法,通过说明条件并分配所需的值来解决问题。
import pandas as pd
df = pd.DataFrame({'A': [1,2,3,4,5], 'B': [34,63,2,5,0]})

# Approach
df.columns = [0 for _ in df.columns]
df[df!=0] = 0

# Result
    0   0
0   0   0
1   0   0
2   0   0
3   0   0
4   0   0

0
尝试使用数据框的values属性和np.array.fill
import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randint(0,100,(5,5)), index=[*'abcde'], columns=[*'ABCDE'])

print(df)
#     A   B   C   D   E
# a  94  96  76  99  34
# b  88  63  17  51  46
# c  92  64  32  12  23
# d  88  89  43  34  50
# e  93  37  70  27  40

df.values.fill(0)

print(df)
#    A  B  C  D  E
# a  0  0  0  0  0
# b  0  0  0  0  0
# c  0  0  0  0  0
# d  0  0  0  0  0
# e  0  0  0  0  0

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