Joo*_*Lee 5 python string dataframe pandas
我有多列的熊猫数据框,其中混合了值和不需要的字符。
columnA columnB columnC ColumnD
\x00A\X00B NULL \x00C\x00D 123
\x00E\X00F NULL NULL 456
Run Code Online (Sandbox Code Playgroud)
我想做的是使这个数据框如下。
columnA columnB columnC ColumnD
AB NULL CD 123
EF NULL NULL 456
Run Code Online (Sandbox Code Playgroud)
使用下面的代码,我可以从 columnA 中删除 '\x00' 但 columnC 很棘手,因为它在某些行中与 NULL 混合。
col_names = cols_to_clean
fixer = dict.fromkeys([0x00], u'')
for i in col_names:
if df[i].isnull().any() == False:
if df[i].dtype != np.int64:
df[i] = df[i].map(lambda x: x.translate(fixer))
Run Code Online (Sandbox Code Playgroud)
有什么有效的方法可以从 columnC 中删除不需要的字符?
通常,要删除非 ascii 字符,请str.encode与 errors='ignore' 一起使用:
df['col'] = df['col'].str.encode('ascii', 'ignore').str.decode('ascii')
Run Code Online (Sandbox Code Playgroud)
要在多个字符串列上执行此操作,请使用
u = df.select_dtypes(object)
df[u.columns] = u.apply(
lambda x: x.str.encode('ascii', 'ignore').str.decode('ascii'))
Run Code Online (Sandbox Code Playgroud)
尽管这仍然无法处理列中的空字符。为此,您可以使用正则表达式替换它们:
df2 = df.replace(r'\W+', '', regex=True)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4379 次 |
| 最近记录: |