0

我有一个 DataFrame df,我需要根据特定列中的值是否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 中创建循环的好方法来做到这一点?此外,将输出存储为数据帧列表或数据帧字典会更有效吗?我问它是一个相当大的数据集。

4

2 回答 2

1

你可以试试这个:

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 
于 2021-10-28T12:30:39.080 回答
1

利用pandas.cut

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

IE。

groups = pd.cut(df["ColB"], [1,3,5,7])
[d for _, d in df.groupby(groups)]
于 2021-10-28T12:31:35.477 回答