我想帮助矢量化我的当前代码,任何帮助或注释都会被接受我有一个df,它有一个奇怪的列,它是从一个可用性检查器函数派生而来的,如下所示:
original_df = pd.DataFrame({
'a':['a1', 'a2', 'a3', 'a4'],
'b':['b1', 'b20', 'b98', 'b4'],
'c':[{'a':'not_available', 'b': 'b1'}, {}, {'a':'a3', 'b': 'b98'}, {'a':'not_available', 'b': 'not_available'}],
})
a | b | c |
---|---|---|
a1 | b1 | >td style="text align:left;">|
a2 | b20 | >|
a3 | b98 | >|
a4 | b4 | {'a': 'not_available', 'b': 'not_available'} | >
从列c
中的dicts创建一个中间数据帧,然后屏蔽不等于not_available
的值,并使用fillna填充原始df 中的空值
out = pd.DataFrame([*original_df['c']], original_df.index)
out = out[out == 'not_available'].fillna(original_df)
print(out)
a b
0 not_available b1
1 a2 b20
2 a3 b98
3 not_available not_available
dict_series = original_df[['a', 'b']].apply(lambda x: dict(x), axis=1)
s = original_df['c']
out = s.where(s.astype(bool), dict_series).apply(lambda x: pd.Series(x))
out
a b
0 not_available b1
1 a2 b20
2 a3 b98
3 not_available not_available