【问题标题】:How to take sum of column on grouping rows of column 1 in dataframe [closed]如何在数据框中对第 1 列的分组行取列的总和 [关闭]
【发布时间】:2019-06-26 17:54:04
【问题描述】:

这是我附加在图像中的数据框,我想根据第一列求和?不代表该条目的值 DATAFRAME IMAGE SAMPLE 我想编写代码以获得如下所示的输出 HWK 0 CSP 0 现金流量 0 我只想在 n/a 或 ??发生然后忽略它并进行求和,以便我可以遍历同一过程的所有数据帧

HWK      0 
CSP     ?? 
DCF      0 
BM_IO   ?? 
CS      ?? 
os      ?? 
CS       0 
ESC      0 
ESC      0 
DCF      0 
DLHLTL  ?? 
CSP      0 
CSP      0 
ESC      0 
CSP     ??

【问题讨论】:

  • 您能否将示例发布为文本而不是图像,以及您的预期输出,这样复制数据会更容易。谢谢
  • HWK 0 CSP ?? DCF 0 BM_IO ?? CS ??操作系统?? CS 0 电调 0 电调 0 DCF 0 DLHLTL ?? CSP 0 CSP 0 ESC 0 CSP ??
  • 您能否将问题中的数据发布为适当的数据框,以及您的预期输出。谢谢。
  • 我正在复制数据框,但它只是粘贴为文本

标签: python pandas pymysql


【解决方案1】:

我假设您的源 DataFrame 具有列 codequantity, 而quantity 的类型为object(既有字符串又有数字)。

那么,可能的解决方案之一如下:

  • df.quantity.astype(str) - 将 quantity 值转换为字符串 (np.nan 值被转换为 'nan' 字符串)。
  • .str.isdigit() - 检查上面的字符串是否只有数字字符。
  • [...] - 上面的布尔列表选择要选择的行(来自df)。
  • .groupby('code').sum() - 有了这样一个“有限”的表,你可以 使用单个 groupbycode)和 sum 执行所有处理 每个组。

总结一下:

df[df.quantity.astype(str).str.isdigit()].groupby('code').sum()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-08
    • 1970-01-01
    • 1970-01-01
    • 2017-12-12
    • 2018-06-13
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    相关资源
    最近更新 更多