在Python Pandas中最快的方法是零字符串/列

krcsximq  于 2023-11-15  发布在  Python
关注(0)|答案(6)|浏览(115)

有没有比像这样迭代遍历pandas嵌套框列更快的方法来清零pandas嵌套框列(其中A、B和C是列名):

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

字符串
如果能快一点的话,我可以把整个网络清零

ryevplcw

ryevplcw1#

问问

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

字符串

j5fpnvbx

j5fpnvbx2#

你可以把整个数组清零:

df[df.columns] = 0

字符串
或者指定列的列表(可迭代):

cols = list("ABC")
df[cols] = 0

6rqinv9w

6rqinv9w3#

要通过调用列的名称将列中的所有行归零,您可以执行以下操作:

df["A"] = 0
df["B"] = 0

字符串
如果你想把整个DataFrame归零,我相信这样的方法应该很有效:

for c in df:
    df[c].values[:] = 0

vdgimpew

vdgimpew4#

我将使用一种简单的方法,即声明一个条件并指定一个所需的值

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

字符串

plicqrtu

plicqrtu5#

试试这个,使用一个框架的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

字符串

cwdobuhd

cwdobuhd6#

我发现这个工作得很好,而且打字也少:
第一个月

相关问题