在python中转置管道分隔csv

在python中转置管道分隔csv,python,csv,Python,Csv,我有一个管道分隔的csv文件,我需要在加载到其他地方之前转置它。如何将每个管道上的行更改为列“|” 所以我想转置的三行是csv,如下所示: CountryCode|AFG| ALB| DZA CountryISO2|AF| AL| DZ CountryName|Afghanistan| Albania| Algeria 我的目标是: Country Code|CountryISO2|CountryName AFG |AF |Afghanistan ALB

我有一个管道分隔的csv文件,我需要在加载到其他地方之前转置它。如何将每个管道上的行更改为列“|”

所以我想转置的三行是csv,如下所示:

CountryCode|AFG| ALB| DZA
CountryISO2|AF| AL| DZ
CountryName|Afghanistan| Albania| Algeria
我的目标是:

Country Code|CountryISO2|CountryName
AFG         |AF         |Afghanistan
ALB         |AL         |Albania
DZA         |DZ         |Algeria
我尝试过使用pandas DataFrame和转置,但这会将所有的值和加载放到一个单元格中

df_csv = pd.DataFrame(data=csv)
transposed_csv = df_csv.T
print(transposed_csv)
结果是这样的:

                        0                      1
[CountryCode|AFG| ALB|] [CountryISO2|AF| AL|] [CountryName|Afghanistan| Albania]

您的问题似乎是数据帧没有正确加载。 您必须使用sep=“|”读取csv,然后才能对其进行转置

df_csv = pd.read_csv(data=file.csv, sep='|')

df_csv.T


0   1
CountryCode CountryISO2 CountryName
AFG AF  Afghanistan
ALB AL  Albania
DZA DZ  Algeria

您缺少一个分隔符

import pandas as pd
df_csv = pd.read_csv("PATH_TO_CSV_FILE_HERE", sep='|')
transposed_csv = df_csv.set_index('CountryCode').T
print(transposed_csv)
完全接近(根据需要,预期输出也是管道分隔的
|
):

输出:

CountryCode|CountryISO2|CountryName
AFG|AF|Afghanistan
ALB|AL|Albania
DZA|DZ|Algeria
import pandas as pd
from io import StringIO

csv_data = '''CountryCode|AFG| ALB| DZA
CountryISO2|AF| AL| DZ
CountryName|Afghanistan| Albania| Algeria'''

df = pd.read_csv(StringIO(csv_data), sep='\|\s*', header=None, index_col=0)
new_csv = df.T.to_csv(sep='|', index=None)
print(new_csv)
CountryCode|CountryISO2|CountryName
AFG|AF|Afghanistan
ALB|AL|Albania
DZA|DZ|Algeria