我有一个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中创建循环呢?此外,将输出存储为Dataframes列表或数据帧字典会更有效吗?我问,因为它是一个相当大的数据集。
发布于 2021-10-28 12:31:35
使用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)]
发布于 2021-10-28 12:30:39
您可以尝试这样做:
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
https://stackoverflow.com/questions/69754061
复制相似问题