如果这是重复,我很抱歉,我找不到任何可以给我答案的东西......
我有一个包含像素值和该值的像素数的数据帧。它看起来像这样:
Value Count
0.1457 900
0.1458 1800
0.1459 900
0.2144 1800
0.4357 2700
0.5764 900
0.7891 1800
0.7892 900
nan 0
nan 0
在这种情况下,每个 nan 实例都表示没有数据的单个像素。
我想将这些值分为 4 类,如下所示...:
...然后为每个类生成一个总和,就像使用上面的示例数据一样:
Class Count
Lo 3600
Mid 6300
Hi 2700
ND 2
我知道这可能需要几个步骤,但是有人有任何指示吗?
您可以使用 Low、Mid、High、NoData 标签创建一个新的
Series
对象,然后将 Series 传递给 groupby
方法。
s = pd.Series('', index=df.index)
s[df.Value.lt(0.2)] = 'Low'
s[df.Value.ge(0.2) & df.Value.lt(0.6)] = 'Mid'
s[df.Value.ge(0.6)] = 'High'
s[df.Value.isna()]] = 'NoData'
counts = df['Count'].groupby(s).sum()
counts['NoData'] = s.value_counts()['NoData']
import pandas as pd
df = pd.DataFrame({"Value":[i*0.01 for i in range(1000)],"Count ":list(range(1000))})
df['Class'] = ["Lo" if v < 0.2 else "Mid" if v > 0.2 and v < 0.6 else "Hi" for v in df.Value]
df.groupby(['Class']).sum()
输出:
班级 | 价值 | 数 |
---|---|---|
嗨 | 4977.5 | 497750 |
洛 | 1.9 | 190 |
中 | 15.6 | 1560 |