将字符串转换为Pandas DataFrame

1 投票
2 回答
38 浏览
提问于 2025-04-13 15:20

我有一个字符串,如下所示:

data="""Country DistrictA PopulationA
Country DistrictB PopulationB
Country DistrictC PopulationC
"""

我需要将它转换成下面这样的CSV格式输出:

Country DistrictA   DistrictB   DistrictC ---
A       PopulationA PopulationB PopulationC.

我们该怎么做呢?

2 个回答

0

好的,你的问题有点让人困惑,不过这里有一种方法可以把一个字符串转换成pandas的数据框,然后再导出为csv文件(这一步是可选的)。你可以使用io.StringIO这个功能,把你的数据转换成一个内存中的流:

import io
import pandas as pd

data="""Country DistrictA PopulationA
Country DistrictB PopulationB
Country DistrictC PopulationC
"""

file_as_string = io.StringIO(data)
df = pd.read_csv(file_as_string, sep=" ", names=["Country", "District", "Population"])

# optional save to CSV
df.to_csv("output.csv", index=False)

这样做会得到以下输出,和你要求的稍微有点不同:

国家 地区 人口
0 国家 地区A 人口A
1 国家 地区B 人口B
2 国家 地区C 人口C
1

我之前没明白怎么找到“A”,不过既然我们已经有了“A”,你可以使用下面的代码:

import pandas as pd
import numpy as np

string = """Country DistrictA PopulationA Country DistrictB PopulationB 
Country DistrictC PopulationC """
string = string.split()

columns = []
values = ["A"]
cnt = 0
for i in range(len(string)):
    if cnt < 2:
        if not string[i] in columns:
            columns.append(string[i])
    else:
        values.append(string[i])
    cnt += 1
    if cnt == 3:
        cnt = 0
    
df = pd.DataFrame(np.array(values).reshape(1,-1), columns=columns)

撰写回答