【发布时间】:2021-12-23 10:40:41
【问题描述】:
我有一个这样的 df:
| parent | child |
|---|---|
| Susie | jose |
| Susie | bob |
| Susie | bob |
| Susie | frank |
| Allen | bob |
| Allen | frank |
我希望它看起来像这样:
| Parent | child_jose | child_bob | child_frank |
|---|---|---|---|
| Susie | 1 | 2 | 1 |
| Allen | 0 | 1 | 1 |
只计算父母拥有的每个孩子的数量,并为该孩子创建一个列,其中包含每个父母拥有多少孩子的数量
我使用此代码首先按父名称分组:
''' by_parent = df.groupby(["ParentName", "ChildName"])['ChildName'].count().to_frame() '''
当我得到输出时,这看起来正确,除了计数列名为“ChildName”。
所以在这段代码之后它看起来像
| ParentName | ChildName | ChildName |
|---|---|---|
| Susie | jose | 1 |
| bob | 2 | |
| frank | 1 | |
| Allen | bob | 1 |
| frank | 1 | |
| jose | 0 |
我在这里尝试了一些类似的解决方案,但我没有运气直接获得列名。使用 to_frame() 后它看起来正确,但是当我调用 df.columns 时,只显示“ChildName”。任何有关如何降低第一步以及可能有助于从 childName 列中转出的帮助都将非常有帮助。提前致谢,如果您需要进一步说明,请发表评论。
【问题讨论】:
标签: python pandas dataframe group-by