删除 Pandas DataFrame.to_string 插入的列之间自动的两个空格

Pyd*_*per 5 python formatting dataframe pandas display

我正在寻找一种解决方案来删除/关闭df.to_string自动创建的列之间的 2 个空格。

例子:

from pandas import DataFrame

df = DataFrame()
df = df.append({'a':'12345', 'b': '12345'})
df.to_string(index=False, header=False)
'12345  1235'
Run Code Online (Sandbox Code Playgroud)

为了清楚起见,结果是:“12345..12345”,其中点代表实际空间。

我已经尝试过pandas.set_optionpandas.to_string文档。

编辑:上面的例子过于简化。我正在使用一个现有的 df,它到处都有空格,输出文本文件由另一个基于每行字符宽度的黑盒程序消耗。我已经弄清楚如何使用格式化程序重新格式化列,并确保我的列不会被 pandas 默认截断,所以我已经完成了 90%(减去这些自动空格)。to_string()仅供参考,这里有一些关于格式化和数据截断的好链接:

感谢您的帮助!

Hen*_*ody 4

您可以使用该pd.Series.str.cat方法,该方法接受sep关键字参数。默认情况下sep设置为'',因此值之间没有分隔。以下是文档:https://pandas.pydata.org/pandas-docs/stable/ generated/pandas.Series.str.cat.html

您还可以使用pd.Series.str.strip删除每个值中的任何前导或尾随空格。以下是文档:https://pandas.pydata.org/pandas-docs/stable/ generated/pandas.Series.str.strip.html

这是一个基于您所拥有的示例:

df = pd.DataFrame({'a': ['12345'], 'b': ['12345']})
df.iloc[0].fillna('').str.strip().str.cat(sep=' ')
Run Code Online (Sandbox Code Playgroud)

fillna('')请注意,如果有任何空值,则这是必需的。