删除行和 ValueError 数组的长度不同

2024-04-01

我的数据框在每个类别下都有子类别(cat, dog, bird),显示统计信息。如果行包含信息,我需要删除它们count and freq,并且只保留行sd and mean价值观。一些值是NaN.

ValueError出现在我的代码中。

df:

 var    stats    A     B     C
 cat     mean    2     3     4
 NaN     sd      2     1     3
 NaN     count   5     2     6
 NaN     freq    3     1     19
 dog     mean    8     1     2
 NaN     sd      2     1     3
 NaN     count   4     6     1
 NaN     freq    3     1     19   
 bird    mean    2     3     4
 NaN     sd      2     1     3
 NaN     count   5     2     6
 NaN     freq    NaN   NaN   NaN 

我的代码:

rows = ['count', 'freq']
df = [df.stats != rows]

预期结果

 var    stats    A     B     C
 cat     mean    2     3     4
 NaN     sd      2     1     3
 dog     mean    8     1     2
 NaN     sd      2     1     3   
 bird    mean    2     3     4
 NaN     sd      2     1     3

error:

File "pandas/_libs/lib.pyx", line 805, in pandas._libs.lib.vec_compare 
(pandas/_libs/lib.c:14288)
ValueError: Arrays were different lengths: 819 vs 9

我不知道如何检查数组长度,但在我的 Excel 电子表格中,所有列和行都具有相同的长度。此错误是由我的数据中的 NaN/空单元格引起的吗?

Thanks!


!=不会在这里工作。使用pd.Series.isin获得一个掩码,然后您将用它来过滤数据帧。

m = ~df.stats.isin(['count', 'freq'])
print(m)
0      True
1      True
2     False
3     False
4      True
5      True
6     False
7     False
8      True
9      True
10    False
11    False
Name: stats, dtype: bool

print(df[m])
    var stats    A    B    C
0   cat  mean  2.0  3.0  4.0
1   NaN    sd  2.0  1.0  3.0
4   dog  mean  8.0  1.0  2.0
5   NaN    sd  2.0  1.0  3.0
8  bird  mean  2.0  3.0  4.0
9   NaN    sd  2.0  1.0  3.0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

删除行和 ValueError 数组的长度不同 的相关文章

随机推荐