str.decode 只有数据框中的一些行

str.decode only some rows from the dataframe

在我的数据集的列中,有一些奇怪的字符,例如 b'Gebietseinheit Kassel ohne Gro\xdfst\xe4dte'。使用 str.decode('latin1') 解决了这个问题。但是,这会弄乱正常的字符串,例如 MyNamePlace 并将它们更改为 null.

content = gpd.read_file(fpath, encoding='utf-8')
content.RKI_NameDE = content.RKI_NameDE.str.decode('latin1')

是否可以自动检查哪些字符串需要解码?如何防止解码所有行?

或者我如何使用 if else 语句来检查可能 \x 然后只修改那些行?

只更改 DataFrame 的字节 str 部分:

df = pd.DataFrame({'s':[b'Gebietseinheit Kassel ohne Gro\xdfst\xe4dte', 'MyNamePlace']})

byte_str = df['s'].map(type) == type(b'')
df.loc[byte_str, 's'] = df.loc[byte_str, 's'].str.decode('latin_1')

如果您有条件需要检查,您可以创建一个函数,然后使用 apply,如果不需要解码,则返回解码后的字符串或原始字符串。

def decode_col(x):
   if condition:
      return x.RKI_NameDE.decode('latin1')
   return x.RKI_NameDE

content.RKI_NameDE = content.apply(decode_col, axis=1)