问题:正在寻找一种解决方案,以删除df.to_string自动创建的列之间的2个空格。进一步来说;我认为必须进行某种设置才能关闭2个空格。
示例:
from pandas import DataFrame
df = DataFrame()
df = df.append({'a':'12345', 'b': '12345'})
df.to_string(index=False, header=False)
'12345 1235'
为清楚起见,结果为:'12345..12345'
我已经看过的地方: -pandas.set_option文档 -pandas.to_string文档
最终挑战: 该示例过于简化。我正在与一个现有的df一起使用,该df到处都有空格,并且输出文本文件被另一个黑盒程序占用,该程序基于每行的字符宽度。我已经想出了如何使用格式化程序重新格式化列,并确保我的列没有被pandas默认值切除,所以我在那里90%(减去这些自动空格)。 与to_string格式和数据截断有关的良好链接:
Convert to date using formatters parameter in pandas to_string
https://github.com/pandas-dev/pandas/issues/9784
感谢帮助!
答案 0 :(得分:1)
您可以使用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=' ')
请注意,如果有任何空值,则需要fillna('')
。
答案 1 :(得分:0)
我也有同样的问题。 to_string()中有一个证明选项,在这种情况下应该会有所帮助。但是我最终还是按照旧的方式做:
[row['a']+ row['b'] for index, row in df.iterrows()]