首页 > 解决方案 > 计算值并将它们作为列附加到数据框中

问题描述

我正在研究航空公司数据集。我必须计算每个airline_pnr 号码的成人、儿童和婴儿的数量,然后将这些值作为列附加到数据框中。

乘客类型:乘客类型(成人(ADT),儿童(CHD),婴儿(INF))

+-------------+----------+
| airline_pnr |Pax_Type  |
+-------------+----------+
| EIPBGB      | ADT      |
| EIPBGB      | ADT      |
| EIPBGB      | CHD      |
| EIPBGB      | INF      |
| UH7EQV      | ADT      |
| UH7EQV      | ADT      |
| YVEEW       | ADT      |
| YVEEW       | ADT      |
| DR6YWR      | ADT      |
| DR6YWR      | ADT      |
| DR6YWR      | ADT      |
| DR6YWR      | CHD      |
| DR6YWR      | INF      |
| QJ2ESP      | ADT      |
| QJ2ESP      | CHD      |
| JL6E9T      | ADT      |
| VGYD5V      | ADT      |
| YVEG1       | ADT      |
| YVEG1       | ADT      |
+-------------+----------+

预期输出:

+--------+----------+--------------+-----------------+---------------+
|air_pnr | Pax Type | no_of_adults | no_of_childrens | no_of_infants |
+--------+----------+--------------+-----------------+---------------+
| EIPBGB | ADT      |            2 |               1 |             1 |
| UH7EQV | ADT      |            2 |               0 |             0 |
| YVEEW  | ADT      |            2 |               0 |             0 |
| DR6YWR | ADT      |            3 |               1 |             1 |
| QJ2ESP | ADT      |            1 |               1 |             0 |
| JL6E9T | ADT      |            1 |               0 |             0 |
| VGYD5V | ADT      |            1 |               0 |             0 |
| YVEG1  | ADT      |            2 |               0 |             0 |
+--------+----------+--------------+-----------------+---------------+

我的努力:

df= df.value_counts(['airline_pnr', 'Pax Type']) 

df = df.to_frame()

df= df.rename(columns = {0: "freq"})

但没有得到想要的结果

标签: python-3.xpandasdataframepandas-groupby

解决方案


'air_pnr'您可以在变量上使用 groupby ,并且他们使用size() 计算每个值出现的次数。

df.groupby(['air_pnr','Pax_Type']).size()

推荐阅读