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() |
我认为,由于
单程:
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
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 |