str.len()对于空集的奇怪行为

问题描述 投票:0回答:1

我在使用pd.Series.str.len()方法计算集合列中的元素时遇到了奇怪的行为

x = pd.DataFrame({'t': ['', 'A', 'A B', 'A B C']})
x['s'] = x.t.str.split(' ').map(set)
x['s_len'] = x.s.str.len()
x['s_reduced'] = x.s - {'A'}
x['s_reduced_len'] = x.s_reduced.str.len()
print(x)

    t       s           s_len   s_reduced   s_reduced_len
0           {}          1       {}          1
1   A       {A}         1       {}          0
2   A B     {B, A}      2       {B}         1
3   A B C   {C, B, A}   3       {C, B}      2

为什么在这种情况下,x.loc[0, 's_len']的值为1,x.loc[1, 's_reduced_len']的值为0?

这是一个错误,我应该报告它还是一个奇怪的预期行为?

大熊猫的版本是0.20.3。

python pandas
1个回答
3
投票

如果你只是打印内容,你可以看到答案,即

x.s_reduced.values

array([{''}, set(), {'B'}, {'C', 'B'}], dtype=object)

如果持有qazxsw poi,第一个单元格实际上不是空的。减去第二个细胞后变成空集。因此长度不同。

''
© www.soinside.com 2019 - 2024. All rights reserved.