#pandas
Вопрос:
У меня есть txt-файл, который выглядит так. При чтении он считывает его как одну колонку. Я пробовал использовать много разных sep=
$Eid, X, Y, Z, Mass
856395 3.4694275e-01 -9.7051837e-02 6.4922004e 00 7.3136240e-03
856396 3.4694746e-01 -9.7053476e-02 6.5071974e 00 7.3139570e-03
856397 3.4695095e-01 -9.7054794e-02 6.5221949e 00 7.3139421e-03
856398 3.4695303e-01 -9.7055703e-02 6.5371923e 00 7.3139500e-03
df_data = pd.read_csv("ElCEntroid kopi-kopi.txt", skiprows=2, sep="t")
Ответ №1:
Я представляю t
, что это не ваш разделитель, а скорее таблицы ( t
):
вы можете попробовать:
df_data = pd.read_csv('ElCEntroid kopi-kopi.txt',
skiprows=1, header=None,
sep='s ' # or sep='t'
)
выход:
0 1 2 3 4
0 856395 0.346943 -0.097052 6.492200 7.3136240e-03
1 856396 0.346947 -0.097053 6.507197 7.3139570e-03
2 856397 0.346951 -0.097055 6.522195 7.3139421e-03
3 856398 0.346953 -0.097056 6.537192 7.3139500e-03
Кстати, если вас интересует заголовок, вы также можете использовать:
df_data = pd.read_csv('ElCEntroid kopi-kopi.txt', sep=",?s ", engine='python')
выход:
$Eid X Y Z Mass
0 856395 0.346943 -0.097052 6.492200 7.3136240e-03
1 856396 0.346947 -0.097053 6.507197 7.3139570e-03
2 856397 0.346951 -0.097055 6.522195 7.3139421e-03
3 856398 0.346953 -0.097056 6.537192 7.3139500e-03
Комментарии:
1. Идеально! Работает — еще одна мелочь. Как мне установить столбец $Eid в качестве индекса col с именем «elementId»?
2. И как мне удалить это: парсер: Возврат к движку «python», потому что движок » c «не поддерживает разделители регулярных выражений (разделители > 1 символ и отличные от» s «интерпретируются как регулярное выражение); вы можете избежать этого предупреждения, указав engine= «python». функция возврата(*args, **кварги)
3. @AsbjoernLund 1 — добавить
.set_index('$Eid').rename_axis('ElementId')
2 — это предупреждение, вы можете добавитьengine='python'
в качестве аргументаread_csv
Ответ №2:
Является ли файл файлом фиксированной ширины? Если это так, вы можете использовать pd.read_fwf()
вместо этого. Это действительно полезно, если вы заранее знаете ширину каждого столбца. Я предполагаю здесь, что Eid, X, Y, Z, Масса имеют ширину 8, 16, 16, 16 и 16 соответственно, но вы можете изменить ее, если она отличается.
df = pd.read_fwf("ElCEntroid kopi-kopi.txt", skiprows=2, widths=[8, 16, 16, 16, 16])