熊猫装饰领先&在数据帧中尾随空格

时间:2018-03-29 08:29:29

标签: python pandas

开发一个功能,修剪领先&尾随空白。

这是一个简单的示例,但真实文件包含更复杂的行和列。

df=pd.DataFrame([["A b ",2,3],[np.nan,2,3],\
[" random",43,4],[" any txt is possible "," 2 1",22],\
["",23,99],[" help ",23,np.nan]],columns=['A','B','C'])

结果应该消除所有领先&尾随空格,但保留文本之间的空格。

df=pd.DataFrame([["A b",2,3],[np.nan,2,3],\
["random",43,4],["any txt is possible","2 1",22],\
["",23,99],["help",23,np.nan]],columns=['A','B','C'])

请注意,该功能需要涵盖所有可能的情况。 谢谢

2 个答案:

答案 0 :(得分:3)

我认为需要检查值是否为字符串,因为列中的混合值 - 带字符串的数字和每个字符串调用strip

df = df.applymap(lambda x: x.strip() if isinstance(x, str) else x)
print (df)
                     A    B     C
0                  A b    2   3.0
1                  NaN    2   3.0
2               random   43   4.0
3  any txt is possible  2 1  22.0
4                        23  99.0
5                 help   23   NaN

如果列具有相同的dtypes,则不会像示例中的NaN那样获取B列中的数值:

cols = df.select_dtypes(['object']).columns
df[cols] = df[cols].apply(lambda x: x.str.strip())
print (df)
                     A    B     C
0                  A b  NaN   3.0
1                  NaN  NaN   3.0
2               random  NaN   4.0
3  any txt is possible  2 1  22.0
4                       NaN  99.0
5                 help  NaN   NaN

答案 1 :(得分:0)

我认为使用正则表达式和替换有一个单行:

df.replace(r"^ +| +$", r"", regex=True, inplace=True)

正则表达式说明:

  • ^ 是行开始
  • (space and plus, +) 是一个或多个空格
  • |是或
  • $ 是行尾。

因此它搜索前导(行首和空格)和尾随(空格和行尾)空格并用空字符串替换它们。