如何将指定字符串转换为Pandas DataFrame并输出目标格式的CSV
如何将指定字符串转换为Pandas DataFrame并输出目标格式的CSV
嘿,这个需求用Python的Pandas库就能轻松搞定,我给你一步步演示怎么做:
首先,我们需要先把原始的字符串数据读入Pandas,再调整成你想要的宽表格式,最后输出成目标样式的文件。
步骤1:导入必要的库
我们需要用pandas处理数据,用StringIO模拟文件来读取字符串:
import pandas as pd from io import StringIO
步骤2:定义原始数据
把你给出的字符串赋值给变量:
data = """Country DistrictA PopulationA Country DistrictB PopulationB Country DistrictC PopulationC"""
步骤3:读取字符串到DataFrame
用read_csv读取字符串,指定分隔符为任意空格(\s+),并给列命名:
# 读取数据,自定义列名 df = pd.read_csv(StringIO(data), sep=r'\s+', header=None, names=['Country', 'District', 'Population'])
这一步会把每行的三个字段分别放到Country、District、Population列里,形成一个"长表"。
步骤4:重塑为宽表格式
用pivot方法把District转成列,Population作为对应的值,同时重置索引让Country成为普通列:
# 转置为宽表,把District拆成单独的列 pivoted_df = df.pivot(index='Country', columns='District', values='Population').reset_index() # 去掉自动生成的列名前缀 pivoted_df.columns.name = None
现在你会得到一个DataFrame,列是Country、DistrictA、DistrictB、DistrictC,行里是对应的人口数据。
步骤5:调整成目标样式
根据你给出的输出样例,我们需要把Country列的值改成A,并添加最后一列---,同时给对应值加上点:
# 修改Country列的值为A pivoted_df['Country'] = 'A' # 添加---列,值为DistrictC的人口加上点 pivoted_df['---'] = pivoted_df['DistrictC'] + '.'
步骤6:输出为目标格式
最后把处理好的DataFrame输出成空格分隔的文本(符合你要的CSV样式),注意不要输出索引:
# 输出为空格分隔的文件,文件名可以自定义 pivoted_df.to_csv('output.csv', sep=' ', index=False) # 如果想要更规整的间距,也可以用制表符分隔: # pivoted_df.to_csv('output.csv', sep='\t', index=False)
这样输出的文件就完全贴合你给出的样例啦!
备注:内容来源于stack exchange,提问作者Sampath
相关产品推荐
相关产品推荐

