关于python:如何检查Pandas行是否包含空集

How to check if a Pandas row contains an empty set

我想检查熊猫数据帧行是否在特定列中包含空集,即

1
2
3
4
5
6
7
d = {'col1': [1, 2], 'col2': [3, {}]}
df2 = pd.DataFrame(data=d)


    col1    col2
0   1       3
1   2       {}

然后

1
df2['col_2_contains_empty_set'] = ? #  how to implement this

应该给予

1
2
3
    col1    col2    col_2_contains_empty_set
0   1       3       False
1   2       {}      True

正确的方法是什么?不能做

1
bool(df['col2'])

1
df['col2'].bool()

我认为,由于Series的布尔值不明确。


单程:

1
df2.apply(lambda x: any(x.values == {}), axis=1)

输出:

1
2
3
0    False
1     True
dtype: bool

1
df2['c'] = np.max(df2.values == {}, 1).astype(bool)

输出:

1
2
3
   col1 col2      c
0     1    3  False
1     2   {}   True

你只是个空compare df2.values词典:

1
2
3
4
5
6
In [ ]: df2['col_2_contains_empty_set'] = (df2.values == {}).any(axis=1)
   ...: df2
Out[ ]:
   col1 col2  col_2_contains_empty_set
0     1    3                     False
1     2   {}                      True


你可以采取优势的事实,len({ })= 0和apply aλ功能:

1
df2['col2'].apply(lambda x: len(x)==0)

注意这会回来的威胁和词典列表为空井。


1
2
3
4
5
df2.applymap(type)==type({})
Out[1044]:
    col1   col2
0  False  False
1  False   True

assgin回来后

1
2
3
4
5
6
df2['C']=(df2.applymap(type)==type({})).any(1)
df2
Out[1052]:
   col1 col2      C
0     1    3   False
1     2   {}    True