将字符串转换为Pandas DataFrame
我有一个字符串,如下所示:
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)