gpt4 book ai didi

python - 如何使用 Pandas 从一个文件中读取多个数据集?

转载 作者:太空宇宙 更新时间:2023-11-03 12:56:53 26 4
gpt4 key购买 nike

我有一个文件,其中包含多组数据,这些数据由行分隔。它看起来像:

country1  
0.9
1.3
2.9
1.1
...
country2
4.1
3.1
0.2
...

我想使用 Pandas 将整个文件读入多个数据帧,其中每个数据帧对应一个国家。有什么简单的方法可以做到这一点?每个国家/地区的参赛作品数量不同。

最佳答案

您可以通过 to_numeric 创建掩码使用 errors='coerce',所以得到 NaN 其中是列名。然后通过 isnull 找到它们并按 cumsum 创建组:

import pandas as pd
import io

temp=u"""country1
0.9
1.3
2.9
1.1
country2
4.1
3.1
0.2"""
#after testing replace io.StringIO(temp) to filename
df = pd.read_csv(io.StringIO(temp), index_col=None, header=None)
print (df)
0
0 country1
1 0.9
2 1.3
3 2.9
4 1.1
5 country2
6 4.1
7 3.1
8 0.2
mask = pd.to_numeric(df.iloc[:,0], errors='coerce').isnull().cumsum()
print (mask)
0 1
1 1
2 1
3 1
4 1
5 2
6 2
7 2
8 2
Name: 0, dtype: int32

最后使用list comprehension 获取dataframes 列表:

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

关于python - 如何使用 Pandas 从一个文件中读取多个数据集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38315085/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com