python - 根据数据框中的部分索引名称对列值求和

标签 python pandas

我有以下数据框,它是 groupby 操作的结果。

Gender          F     M
Grade letter
D            NaN   1.0
D+            7.0  2.0
C-            3.0  2.0
C             3.0  4.0
C+            9.0  12.0
B-            8.0  10.0
B             6.0  3.0
B+            5.0  7.0
A-            7.0  4.0
A             2.0  4.0
A+            1.0 NaN

我想结合像 D、C、B、A 这样的等级字母而忽略后缀 (-, +)。

所需的输出类似于
Gender          F     M
Grade letter
D             7.0   3.0
C             15.0 18.0
B             19.0 20.0
A             10.0 8.0

我尝试了提供的解决方案 here ,但它不适合我。
df.groupby(df.index.to_series().str[0]).size().unstack(fill_value=0)

最佳答案

您可以聚合sum , 首字母也可以省略 .to_series() :

df1 = df.groupby(df.index.str[0], sort=False).sum()
print (df1)
           F     M
Gender            
D        7.0   3.0
C       15.0  18.0
B       19.0  20.0
A       10.0   8.0

关于python - 根据数据框中的部分索引名称对列值求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59763844/

相关文章:

python - 在 Windows 10 中安装适用于 Python 3.7.1 的 Mayavi

python - 如何建立卡方分布表

python - 将 PANDAS 与 Apache Beam 结合使用

python - 具有可变长度多重索引的 pandas 数据框用 NaN 替换值

python - 如何将掩码从数组应用到numpy中的另一个矩阵

python - 添加字符串 + 自动递增 - pandas, python

python - 如何将 Python session (包括输入和输出)保存为文本?

python - 我可以从不同的目录运行 django 测试 (manage.py) 吗?

python - mypy:基类没有属性x,如何在基类中输入提示

python - 有没有办法测试 SQLAlchemy 连接?