Python 如何使用Pandas从一个文件中读取多个数据集?
我有一个文件,其中包含多组由行分隔的数据。它看起来像:Python 如何使用Pandas从一个文件中读取多个数据集?,python,pandas,Python,Pandas,我有一个文件,其中包含多组由行分隔的数据。它看起来像: country1 0.9 1.3 2.9 1.1 ... country2 4.1 3.1 0.2 ... 我想使用Pandas将整个文件读入多个数据帧,其中每个数据帧对应一个国家。有什么简单的方法可以做到这一点吗?每个国家都有不同数量的条目。您可以通过使用errors='concurve'创建mask,因此获取NaN列名的位置。然后通过以下方式查找并创建组: 最后使用列表理解查看数据帧列表: dfs
country1
0.9
1.3
2.9
1.1
...
country2
4.1
3.1
0.2
...
我想使用Pandas将整个文件读入多个数据帧,其中每个数据帧对应一个国家。有什么简单的方法可以做到这一点吗?每个国家都有不同数量的条目。您可以通过使用
errors='concurve'
创建mask
,因此获取NaN
列名的位置。然后通过以下方式查找并创建组:
最后使用列表理解
查看数据帧列表
:
dfs = [g[1:].rename(columns={0:g.iloc[0].values[0]}) for i, g in df.groupby(mask)]
print (dfs)
print (dfs[0])
country1
1 0.9
2 1.3
3 2.9
4 1.1
print (dfs[1])
country2
6 4.1
7 3.1
8 0.2
如果需要重置索引:
dfs = [g[1:].rename(columns={0:g.iloc[0].values[0]}).reset_index(drop=True) for i, g in df.groupby(mask)]
print (dfs)
print (dfs[0])
country1
0 0.9
1 1.3
2 2.9
3 1.1
print (dfs[1])
country2
0 4.1
1 3.1
2 0.2
Pandas支持csv和json等标准文件格式,但这不是其中之一。我假设手工重新格式化文件是浪费时间,建议您自己使用
和open(…)作为f:
和f.readlines()
将文件解析为python对象
假设您已经这样做了,并且格式看起来像数据
,那么来自_dict()的应该可以工作:
data = { "countryName1": [0.9, 1.3, ...], "countryName2": [...]}
df = pd.DataFrame.from_dict(data)
@ArturJ无论国家是否按数字排序,该解决方案都应该有效。jezrael正在使用is_numeric
来识别那些不是数字的条目,以便识别子数据帧的结束和开始位置。只有当数据本身不是数字或国家名为5.3
时,才会出现问题。总之,你应该准备好了。@ArturJ同样,如果这回答了你的问题,请记住把它标记为答案。如果你有后续问题,请随意再问一个问题。我才意识到我从来没有感谢过你出色的回答。非常感谢。
dfs = [g[1:].rename(columns={0:g.iloc[0].values[0]}).reset_index(drop=True) for i, g in df.groupby(mask)]
print (dfs)
print (dfs[0])
country1
0 0.9
1 1.3
2 2.9
3 1.1
print (dfs[1])
country2
0 4.1
1 3.1
2 0.2
data = { "countryName1": [0.9, 1.3, ...], "countryName2": [...]}
df = pd.DataFrame.from_dict(data)