在python中转置管道分隔csv
我有一个管道分隔的csv文件,我需要在加载到其他地方之前转置它。如何将每个管道上的行更改为列“|” 所以我想转置的三行是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
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