Я хочу записать некоторые данные, используя фрейм панды, в файл .dat. Сохранение не является проблемой его формирования. Я использовал sep = '\ t', но он лишь иногда помещает табуляцию между данными.
Мой код выглядит так:
data.reindex(columns = ['n','Burn_Gain','V','I','I_smooth']).to_csv(dat_file_path,index = False,
header = False, sep = '\t')
Итоговые данные:
1.0 1 0.01785000041127 5.435180664063e-06 5.435180664063e-06
1.0 1 0.01934999972582 5.679321289062e-06 5.679321289062e-06
1.0 1 0.02085000090301 5.89599609375e-06 5.89599609375e-06
1.0 1 0.02235000021756 6.11572265625e-06 6.11572265625e-06
1.0 1 0.0238499995321 6.4453125e-06 6.4453125e-06
1.0 1 0.0253500007093 6.658935546875e-06 6.658935546875e-06
1.0 1 0.02685000002384 6.771850585937e-06 6.771850585937e-06
1.0 1 0.02834999933839 7.015991210937e-06 7.015991210937e-06
1.0 1 0.02985000051558 7.232666015625e-06 7.232666015625e-06
Почему? и как мне это исправить?
Я также пытаюсь настроить свой код, чтобы в файл данных сохранения добавлялась пустая строка всякий раз, когда первый столбец меняет значения. Если у кого-нибудь есть более изящный метод, чем использование f.readlines () и цикла, дайте мне знать. Спасибо!
2 ответа
Это не ошибка sep='\t
, это просто то, как отображается файл внутри данных или "как он выглядит" для наших глаз. Сам файл уже разделен табуляцией. Вероятно, это связано с разным количеством цифр после десятичной точки.
Я бы рекомендовал следующий код, чтобы сделать все это стандартизированным (например, 3 цифры после десятичной точки)
data.reindex(columns = ['n','Burn_Gain','V','I','I_smooth']).to_csv('pandasfile.csv', float_format='%.3f')
Я подумал, что это символ табуляции в файле, когда ты читаешь его глазами. но на самом деле сам файл сохраняется как \t
:
df_str = '''
1.0 1 0.01785000041127 5.435180664063e-06 5.435180664063e-06
1.0 1 0.01934999972582 5.679321289062e-06 5.679321289062e-06
1.0 1 0.02085000090301 5.89599609375e-06 5.89599609375e-06
1.0 1 0.02235000021756 6.11572265625e-06 6.11572265625e-06
1.0 1 0.0238499995321 6.4453125e-06 6.4453125e-06
1.0 1 0.0253500007093 6.658935546875e-06 6.658935546875e-06
1.0 1 0.02685000002384 6.771850585937e-06 6.771850585937e-06
1.0 1 0.02834999933839 7.015991210937e-06 7.015991210937e-06
1.0 1 0.02985000051558 7.232666015625e-06 7.232666015625e-06
'''
df = pd.read_csv(io.StringIO(df_str.strip()), sep='\s+', index_col=False, header=None)
df.to_csv('t1.csv', sep='\t', header=None)
# !cat t1.csv
list(open('t1.csv'))
# ['0\t1.0\t1\t0.01785000041127\t5.435180664063e-06\t5.435180664063e-06\n',
# '1\t1.0\t1\t0.01934999972582\t5.679321289062e-06\t5.679321289062e-06\n',
# '2\t1.0\t1\t0.02085000090301\t5.89599609375e-06\t5.89599609375e-06\n',
# '3\t1.0\t1\t0.02235000021756\t6.11572265625e-06\t6.11572265625e-06\n',
# '4\t1.0\t1\t0.0238499995321\t6.4453125e-06\t6.4453125e-06\n',
# '5\t1.0\t1\t0.0253500007093\t6.658935546875e-06\t6.658935546875e-06\n',
# '6\t1.0\t1\t0.02685000002384\t6.771850585937e-06\t6.771850585937e-06\n',
# '7\t1.0\t1\t0.02834999933839\t7.015991210937e-06\t7.015991210937e-06\n',
# '8\t1.0\t1\t0.02985000051558\t7.232666015625e-06\t7.232666015625e-06\n']
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.