python - 如何对具有相同键的行求和?

标签 python pandas sorting dataframe

在我的代码中,df是这样定义的

df = pd.read_excel(io=file_name, sheet_name=sheet, sep='\s*,\s*')

我有一个 [86 行 x 1 列] 数据框 dfprint(df) 上看起来像这样

          0
Male    511
Female  461
Male    273
Female  217
Male    394
Female  337
Female  337
Male    337
...

我希望编写一个代码来合并像这样的MaleFemale条目

          0   1   2   3 ...
Male    511 273 394 337 ...
Female  461 217 337 337 ...

我需要做的最后一个任务是 .sum() 男性行,然后是女性行以获得每个性别的总和。我是 python 和 pandas 的新手,到目前为止我还没有取得太大进展。任何帮助、教程、文档都会很棒!谢谢!

编辑:keys 我指的是索引。我希望这些男性和女性的标签可以用来将这些行“组合”在一起,但我不知道该怎么做。

编辑:我已经通过直接完成了我的最后一个任务

print(df.ix['Female'].sum())
print(df.ix['Male'].sum())

但我还没有完成我的首要任务。有什么想法吗?

最佳答案

通过 GroupBy.cumcount 创建 MultiIndex对于通过 unstack reshape 创建的新列名称:

df.index = [df.index, df.groupby(level=0).cumcount()]

print (df)
            0
Male   0  511
Female 0  461
Male   1  273
Female 1  217
Male   2  394
Female 2  337
       3  337
Male   3  337

df = df[0].unstack()
print (df)
          0    1    2    3
Female  461  217  337  337
Male    511  273  394  337

然后按axis=1对所有行求和:

print (df.sum(axis=1))

Female    1352
Male      1515
dtype: int64

关于python - 如何对具有相同键的行求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50757929/

相关文章:

pandas - 在数据框中使用带有条件的变换

python - 合并来自 Github 存储库链接的所有 csv 文件,使其成为一个 csv 文件

javascript - JS使用lodash根据对象值对高级对象数组进行排序

python - Plotly:如何为使用多条轨迹创建的图形设置调色板?

python - 使用 Mautic API,如何在创建电子邮件时发送参数 "lists"?

python - 将 Auth0 装饰器与 Flask-RESTful 资源一起使用

arrays - 在 Shell 脚本中组织一系列数据

python - 带有计数的断言

python - 编辑日期列表

python - Python 如何对集合列表进行排序?