我有一个很大的 Excel 文件,我正在查看其中的一行,我想从文本条目中删除前导和尾随空格。
我的代码如下:
df = pd.read_excel(excel_file_name)
layer = df.loc[[layer_index]] # layer is a single row in df and layer_index is an integer
print(layer.iloc[:,37:42])
for col in layer.columns:
if type(layer[col]) == str:
layer[col] = layer[col].map(str.strip)
print(layer.iloc[:,37:42])
第 41 列包含大量前导和尾随空格,因此 Excel 条目类似于
Cell 3 ramp
。输出是:
Unnamed: 37 Unnamed: 38 Unnamed: 39 Unnamed: 40 Unnamed: 41
22 NaN Ga2 NaN Cell 3 ramp NaN
Unnamed: 37 Unnamed: 38 Unnamed: 39 Unnamed: 40 Unnamed: 41
22 NaN Ga2 NaN Cell 3 ramp NaN
但我希望它能够删除空格:
Unnamed: 37 Unnamed: 38 Unnamed: 39 Unnamed: 40 Unnamed: 41
22 NaN Ga2 NaN Cell 3 ramp NaN
Unnamed: 37 Unnamed: 38 Unnamed: 39 Unnamed: 40 Unnamed: 41
22 NaN Ga2 NaN Cell 3 ramp NaN
为什么我的代码不起作用?
示例
我们需要最小且可重复的示例。
import pandas as pd
df = pd.DataFrame({'col1':['a', 'b', ' c'], 'col2':[1, 2, 3], 'col3':[' ab ', ' bc', 'd']})
df
col1 col2 col3
0 a 1 ab
1 b 2 bc
2 c 3 d
代码
这是从所有字符串列中删除空格的代码。
cols = df.select_dtypes('object').columns
df[cols] = df[cols].apply(lambda x: x.str.strip())
df
col1 col2 col3
0 a 1 ab
1 b 2 bc
2 c 3 d