python - Groupby 大于 Pandas 非常慢

标签 python pandas

我将下表作为 pandas 数据框。我需要计算所有 Part Number,其中 Net Sales 大于给定零件的 Recommended Price

输入:above_master

  Short Number  Net Sales    Part Number   Recommended Price
0       MU2146     413.25      MU2146      385.949155
1       MU2146     433.12      MU2146      385.949155
2       MU2146     498.12      MU2146      385.949155
3       MU1609     146.07      MU1609      149.138978
4       MU1609     246.17      MU1609      149.138978

要求的输出

Part Number count
MU2146       3 
MU1609       1

使用的代码

for number in range(len(above_master.index)):
    cal_s1 = above_master[above_master['Net Sales'] > above_master.iloc[number]['Recommended Price'] ].groupby('Part Number')['Recommended Price'].count()
    cal_s2 = cal_s1.to_frame().reset_index()
    cal_s3 = cal_s2.loc[cal_s2['Part Number'] == above_master.iloc[number]['Part Number']]
    cal_s4 = cal_s4.append(cal_s3, ignore_index=True)

这工作正常,但需要很长时间。

最佳答案

使用 locsize:

df.loc[df['Recommended Price'].lt(df['Net Sales'])].groupby('Part Number').size()

Part Number
MU1609    1
MU2146    3
dtype: int64

关于python - Groupby 大于 Pandas 非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52676813/

相关文章:

python - Graphviz:为具有彩虹效果的线条着色

python - 计算问题的最优解

python - 通过 Google Cloud Maps Directions API 获取距离

python - 重新采样 Pandas 列日期时间

python - 使用 pandas 将单行转换为 NaN 的稀疏矩阵

python - 获取 pandas HDF5 查询中的最后一行

python - 如何获取值在 pandas 的任何过滤列中至少匹配一次的行

python - 如果同一字符串中 '.' 之前没有 'xyz',如何返回 true

python - 在 Python Pandas 中使用多个 'Value' 列拆分 DataFrame

python - 在同一列上从 df1 合并到 df2 - 扩展数据集