Python:根据值的范围将DataFrame拆分为Dict of DataFrame



我有一个DataFramedf,我需要根据特定列ColB中的值是否在给定范围内进行拆分;

1- 3,3 - 5,5 -7等

输入:

Time ColA ColB ColC
1    100  1.1  500
2    105  3.2  600
3    107  7.7  550
4    106  2.4  750
5    104  5.2  950
6    103  6.9  450

所需输出:

Time ColA ColB ColC
1    100  1.1  500
4    106  2.4  750

Time ColA ColB ColC
2    105  3.2  600

Time ColA ColB ColC
3    107  7.7  550
5    104  5.2  950
6    103  6.9  450

在Python中有没有一种不创建循环的好方法来做到这一点?另外,将输出存储为数据帧列表或数据帧字典会更有效吗?这是一个相当大的数据集。

使用pandas.cut

https://pandas.pydata.org/docs/reference/api/pandas.cut.html

groups = pd.cut(df["ColB"], [1,3,5,7])
[d for _, d in df.groupby(groups)]

你可以试试:

lst = [(1,3), (3,5), (5,7)]
result = [df[df['ColB'].between(a,b)] for a,b in lst]
for i in result:
print(i, "n")

Time  ColA  ColB  ColC
0     1   100   1.1   500
3     4   106   2.4   750 
Time  ColA  ColB  ColC
1     2   105   3.2   600 
Time  ColA  ColB  ColC
4     5   104   5.2   950
5     6   103   6.9   450 

最新更新