Cách nhanh nhất để Zero dataframe / cột trong Python Pandas
Aug 18 2020
Có cách nào nhanh hơn để xóa cột khung dữ liệu gấu trúc hơn là lặp lại qua khung dữ liệu như thế này (trong đó A, B và C là tên Cột):
while x < Framelength
dg.iloc[x, A] = 0
dg.iloc[x, B] = 0
dg.iloc[x, C] = 0
x+=1
Tôi không sao với việc xóa toàn bộ khung dữ liệu nếu điều đó sẽ nhanh hơn
Trả lời
2 BENY Aug 19 2020 at 02:14
Kiểm tra với
cols=[...]
df.loc[:, cols]=0
1 anon01 Aug 19 2020 at 02:38
Bạn có thể xóa toàn bộ khung dữ liệu:
df[df.columns] = 0
hoặc chỉ định một danh sách (có thể lặp lại) gồm các cột:
cols = list("ABC")
df[cols] = 0
1 MarcosTidball Aug 19 2020 at 02:14
Để xóa tất cả các hàng trong một cột bằng cách gọi tên của cột, bạn có thể làm như sau:
df["A"] = 0
df["B"] = 0
Nếu bạn muốn xóa toàn bộ DataFrame bằng không mặc dù tôi tin rằng những thứ như thế này sẽ khá hiệu quả:
for c in df:
df[c].values[:] = 0
N.Arunoprayoch Aug 19 2020 at 02:21
Tôi sẽ sử dụng một cách tiếp cận đơn giản bằng cách nêu một điều kiện và chỉ định một giá trị bạn muốn
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
ScottBoston Aug 19 2020 at 03:03
Hãy thử điều này, sử dụng valuesthuộc tính của khung dữ liệu và 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