gpt4 book ai didi

python - 根据列中的值过滤 pandas 数据框中的行

转载 作者:行者123 更新时间:2023-11-30 22:39:42 26 4
gpt4 key购买 nike

我有以下数据框:

In [48]: df.head(10)
Out[48]:
beat1 beat2 beat3 beat4 beat5 beat6 beat7
filename
M46_MI_RhHy61d.dat 0.7951 0.8554 0.9161 1.0789 0.6664 0.7839 0.6076
M60_MI_AH53d.dat 0.7818 0.7380 0.8657 0.9980 0.7491 0.9272 0.8781
M57_Car_AF0489d.dat 1.1040 1.1670 1.7740 1.3080 1.2190 1.0800 1.2390
F62_MI_AH39d.dat 1.2150 0.9360 0.9890 1.1960 0.8420 1.1530 1.1360
F81_MI_DM10d.dat 1.0650 1.1190 1.1330 1.2040 1.1220 1.1640 1.0600
M61_My_508d.dat 0.6963 0.7910 0.6362 0.6938 0.7410 0.7198 0.7060
M69_MI_554d.dat 1.0400 1.0890 1.0190 0.9600 1.0720 1.0870 1.0100
F78_MI_548d.dat 1.1410 1.3290 0.8620 0.0000 1.3160 1.2180 1.2870
F68_MI_AH152d.dat 1.1910 1.1170 1.1030 1.2430 1.0100 0.0000 0.0000
M46_Myo_484d.dat 0.6799 0.7278 0.6808 0.7059 0.7973 0.6956 0.6685

在某些情况下,列中的某些(但不需要全部)值等于0,并且我不知道它们将出现在给定行的哪些列中。例如,在上面给出的数据框中,倒数第二行的最后两个值为零。我想从数据框中删除这些行。如果我知道这些值将出现在哪些列中,我就可以做到这一点,但是,这正是我所不知道的。关于这样做有什么想法吗?

最佳答案

IIUC:

您想删除任何包含零的行吗?

选项 1
pd.DataFrame.mask 返回一个带有 np.nan 的数据帧,其中 bool 数组参数为 True。然后我可以 dropna 它默认删除存在任何空值的行。

df.mask(df == 0).dropna()

beat1 beat2 beat3 beat4 beat5 beat6 beat7
filename
M46_MI_RhHy61d.dat 0.7951 0.8554 0.9161 1.0789 0.6664 0.7839 0.6076
M60_MI_AH53d.dat 0.7818 0.7380 0.8657 0.9980 0.7491 0.9272 0.8781
M57_Car_AF0489d.dat 1.1040 1.1670 1.7740 1.3080 1.2190 1.0800 1.2390
F62_MI_AH39d.dat 1.2150 0.9360 0.9890 1.1960 0.8420 1.1530 1.1360
F81_MI_DM10d.dat 1.0650 1.1190 1.1330 1.2040 1.1220 1.1640 1.0600
M61_My_508d.dat 0.6963 0.7910 0.6362 0.6938 0.7410 0.7198 0.7060
M69_MI_554d.dat 1.0400 1.0890 1.0190 0.9600 1.0720 1.0870 1.0100
M46_Myo_484d.dat 0.6799 0.7278 0.6808 0.7059 0.7973 0.6956 0.6685

选项 2
使用 loc,其中行中的所有值为零

df.loc[(df != 0).all(1)]

选项 3
numpy 提供了很高的效率。与选项 2 类似的概念。但是,我们从头开始重建。

v = df.values
mask = (v != 0).all(1)
pd.DataFrame(v[mask], df.index[mask], df.columns)
<小时/>

简单时间测试

enter image description here

关于python - 根据列中的值过滤 pandas 数据框中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43066038/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com