Исходный файл .csv -
#,Name,Type 1,Type 2,HP,Attack,Defense,Sp. Atk,Sp. Def,Speed,Generation,Legendary
1,Bulbasaur,Grass,Poison,45,49,49,65,65,45,1,FALSE
2,Ivysaur,Grass,Poison,60,62,63,80,80,60,1,FALSE
3,Venusaur,Grass,Poison,80,82,83,100,100,80,1,FALSE
Мой код Python с использованием df.iterrows() -
import pandas as pd
import os
df = pd.read_csv('pokemon_data.csv')
with open('output.txt', 'w') as f:
for index, row in df.iterrows():
row_i = str(index) + str(row)
f.write(row_i)
Я узнал, что нам следует избегать использования df.iterrow(), поскольку при работе с большими данными он будет работать очень медленно.
Как я могу повернуть столбцы Pandas DataFrame в индекс самого внутреннего уровня и получить результат следующим образом, без использования df.iterrows(), тогда?
0 # 1
Name Bulbasaur
Type 1 Grass
Type 2 Poison
HP 45
Attack 49
Defense 49
Sp. Atk 65
Sp. Def 65
Speed 45
Generation 1
Legendary False
1 # 2
Name Ivysaur
Type 1 Grass
Type 2 Poison
HP 60
Attack 62
Defense 63
Sp. Atk 80
Sp. Def 80
Speed 60
Generation 1
Legendary False
2 # 3
Name Venusaur
Type 1 Grass
Type 2 Poison
HP 80
Attack 82
Defense 83
Sp. Atk 100
Sp. Def 100
Speed 80
Generation 1
Legendary False
@Henry Ecker,
stack()
,to_string('output.txt')
— лаконично, мощно и красиво!Генри Экер, я просто обнаружил, что если я использую 'to_string' и если ячейка содержит длинное предложение, то длинное предложение усекается.
Маловероятно, что
to_string
будет вести себя таким образом.max_colwidth
по умолчанию неограничен. Я также только что протестировал его со столбцом строк длиной 10 000 символов, и он распечатался правильно. Вы можете перепроверить свои исходные данные или задать новый вопрос с помощью MRE, который можно использовать для воспроизведения этой новой проблемы с усечением.Генри Эккер, конечно. Я задал новый вопрос