在带有缺失值的Python数据帧上解码base64

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

我有一个带有

val_string
列的数据框,有时会填充 Base64 编码的字符串,有时会填充 NaN。

df
    base_type   val_int     val_string
0     integer        34            NaN
1      string       NaN   c3RyaW5nMQ==
2     integer       108            NaN
3     integer      3586            NaN
4      string       NaN   c3RyaW5nMg==

如何将

base64.b64decode
仅应用于
val_string
不为 NaN 的行?

我尝试了这个,结果却得到了一个奇怪的

OSError: could not get source code

df['val_string'] = df['val_string'].apply(lambda x: df['val_string'] if pd.isna(df['val_string']) else base64.b64decode(x))

任何帮助将不胜感激!

pandas dataframe base64
1个回答
0
投票

使用布尔索引

from base64 import b64decode

m = df['val_string'].notna()
df.loc[m, 'val_string'] = df.loc[m, 'val_string'].apply(b64decode)

输出:

  base_type  val_int  val_string
0   integer     34.0         NaN
1    string      NaN  b'string1'
2   integer    108.0         NaN
3   integer   3586.0         NaN
4    string      NaN  b'string2'
© www.soinside.com 2019 - 2024. All rights reserved.