如何根据一系列值对数据帧行进行有效分类?

2024-04-25 12:21:06 发布

您现在位置:Python中文网/ 问答频道 /正文

你好,我对Python比较陌生,我有一个熊猫数据帧,看起来像下面看到的,我从txt文件导入的:

UnitNamePCU  Timestamp           PowerREF  PowerPCU         
F09       2014-11-01 00:20:00     60.73     79.64   
F09       2014-11-01 00:30:00     63.15     84.06   
F09       2014-11-01 01:00:00    101.06     84.03   
F09       2014-11-01 01:10:00    122.79    104.29   
F09       2014-11-01 01:20:00     86.57    110.08   
F09       2014-11-01 01:40:00     16.74     27.32   
F09       2014-11-01 01:50:00     12.59     21.69   
F09       2014-11-01 02:20:00     17.42     13.98

我的问题是如何将PowerREF和PowerPCU列中的数据排序到“bin”中,比如:bin1=PowerREF<;50,bin2=50<;PowerREF<;100。我知道我可以做一些像:

bin1 = [x for x in data.PowerREF if x < 50]
bin2 = [x for x in data.PowerREF if x > 50 and x < 100]

但由于“bin”间隔可能在下次bin1=x<;100、bin2=100<;x<;200时改变。 我知道前面的箱子间隔和最后一个箱子的最大值。所以我想我应该可以做点什么:

PowerLim = 1500
binInterval = 50
bin = range(0, PowerLim+1, binInterval)

我只是不知道如何将它智能和有效地融入binin过程。你知道吗


Tags: 数据inltfordata间隔ifbin
1条回答
网友
1楼 · 发布于 2024-04-25 12:21:06

IIUC,您可以在这里使用pd.cut

power_lim = 1500
bins = np.arange(0, power_lim + 1, 50)

pd.cut(df.PowerREF, bins=bins)

F09     (50, 100]
F09     (50, 100]
F09    (100, 150]
F09    (100, 150]
F09     (50, 100]
F09       (0, 50]
F09       (0, 50]
F09       (0, 50]
Name: PowerREF, dtype: category
Categories (30, interval[int64]): [(0, 50] < (50, 100] < (100, 150] < (150, 200] < ... <
                                   (1300, 1350] < (1350, 1400] < (1400, 1450] < (1450, 1500]]

相关问题 更多 >