【问题标题】:How to sum area if a threshold is reached in pandas dataframe?如果在熊猫数据框中达到阈值,如何对面积求和?
【发布时间】:2023-02-16 17:37:49
【问题描述】:

我有一个熊猫数据框df,我试图在每个州达到另一个熊猫数据框lst的阈值日之前找到需要收获的公顷总和area

lst = pd.DataFrame()
lst['ST'] = ['CA', 'MA', 'TX', 'FL', 'OH', 'WY', 'AK']
lst['doy'] = [140, 150, 160, 170, 180, 190, 200]
print(df)
            doy  ST  ...          area  left
0           111  AK  ...  4.293174e+05  760964.996900
1           120  AK  ...  4.722491e+06  760535.679500
2           121  AK  ...  8.586347e+06  760149.293900
3           122  AK  ...  2.683233e+07  758324.695200
4           122  AK  ...  2.962290e+07  758045.638900
..          ... ...  ...           ...            ...
111         211  AK  ...  7.609006e+09     107.329336
112         212  AK  ...  7.609221e+09      85.863469
113         213  AK  ...  7.609435e+09      64.397602
114         214  AK  ...  7.609650e+09      42.931735
115         215  AK  ...  7.610079e+09       0.000000

所以我最终会得到一个数据框,它总结了lst中阈值doy之前的所有area

     area       ST
   5.0000+05      CA
   4.0123+05      MA
   3.1941+05      TX
   4.0011+05      FL
   1.2346+05      OH
   87.318+05      WY
   0.7133+05      AK

我怎样才能做到这一点?

【问题讨论】:

  • 这像 groupby ST 和一些每个区域吗?

标签: python pandas merge


【解决方案1】:

使用:

df = df[df['doy'].lt(df['ST'].map(lst.set_index('ST')['doy'])].groupby(['ST'])['area'].sum()

【讨论】:

    猜你喜欢
    • 2021-04-10
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 2019-10-06
    • 2017-01-19
    • 2016-11-23
    • 2019-03-12
    • 1970-01-01
    相关资源
    最近更新 更多