按值重新格式化 Pandas DataFrame 计数

从 Moodle 调查中,我得到了下一个 DataFrame


# -*- coding: utf-8 -*-


import pandas as pd


data = pd.DataFrame({

    "Id":[0, 1, 2, 3, 4, 5],

    "App ABAP": ["Aucune expérience", "Aucune expérience", "en Bachelor", "Aucune expérience", "Aucune expérience", "en Bachelor"], # where did you learn

    "Exp ABAP": ["Aucune expérience", "Aucune expérience", "1 semestre de pratique", "Aucune expérience", "Aucune expérience", "1 semestre de pratique"], # how long did you practice

    "Autre": ["-", "Arduino", "-", "-", "-", "-"],

    "App Autre": ["Aucune expérience", "en Bachelor", "Aucune expérience", "Aucune expérience", "Aucune expérience", "Aucune expérience"],

    "Exp Autre": ["Aucune expérience", "1 an de pratique", "Aucune expérience", "Aucune expérience", "Aucune expérience", "Aucune expérience"],

    "App Python": ["en Bachelor", "en Terminale,; en Bachelor,; dans un autre cadre", "Aucune expérience", "en Bachelor", "Aucune expérience", "en Bachelor"],

    "Exp Python": ["1 semestre de pratique", "1 semestre de pratique", "Aucune expérience", "1 semestre de pratique", "Aucune expérience", "1 semestre de pratique"],

    })

对于每种语言,我想按 Xp 值计算,例如:


| Exp                    | ABAP | Autre | Python |

|------------------------|------|-------|--------|

| Aucune expérience      | 4    | 5     | 2      |

| 1 semestre de pratique | 2    | 0     | 4      |

| 1 an de pratique       | 0    | 1     | 0      |

有没有办法在熊猫中做到这一点?


跃然一笑
浏览 227回答 1
1回答

富国沪深

您可以查看所有Exp以正则表达式开头的列(^用于字符串的开头) by DataFrame.filter,然后调用value_countswithDataFrame.apply并最后将NaNs转换为0with 转换为整数:df = data.filter(regex='^Exp').apply(pd.value_counts).fillna(0).astype(int)print (df)                        Exp ABAP  Exp Autre  Exp Python1 an de pratique               0          1           01 semestre de pratique         2          0           4Aucune expérience              4          5           2编辑:df = (data.filter(regex='^App')         .stack()         .str.split(',;\s+', expand=True)         .stack()         .groupby(level=1)         .value_counts()         .unstack(0, fill_value=0)         )print (df)                     App ABAP  App Autre  App PythonAucune expérience           4          5           2dans un autre cadre         0          0           1en Bachelor                 2          1           4en Terminale                0          0           1
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python