Pandas - DataFrame.to_string удаляет интервалы между столбцами - PullRequest
0 голосов
/ 27 августа 2018

Вопрос: Ищите решение для удаления 2 пробелов между столбцами, которые 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'

для ясности результат: '12345..12345'

Где я уже посмотрел: - документация pandas.set_option - документация pandas.to_string

Ultimate Challenge: пример слишком упрощен.Я работаю с существующим df, который имеет пробелы повсюду, а выходные текстовые файлы используются другой программой черного ящика, которая основана на char-width для каждой строки.Я уже понял, как переформатировать столбцы с помощью средств форматирования и убедиться, что мои столбцы не обрезаны по умолчанию для панд, поэтому я на 90% (за исключением этих пробелов).Хорошие ссылки на форматирование to_string и усечение данных:

Преобразование в дату с использованием параметра форматирования в pandas to_string

https://github.com/pandas-dev/pandas/issues/9784

Благодарность за помощь!

Ответы [ 2 ]

0 голосов
/ 26 июля 2019

У меня тоже была такая же проблема.В to_string () есть опция justify, которая должна помочь в этом случае.Но в итоге я сделал это по-старому:

[row['a']+ row['b'] for index, row in df.iterrows()]
0 голосов
/ 27 августа 2018

Вы можете использовать метод 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('') требуется, если есть какие-либо пустые значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...