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)
在我的数据集的列中,有一些奇怪的字符,例如 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)