当一列中有多个类别时如何编码

我的数据框看起来像这样

http://img.mukewang.com/614d729e00012aab01680184.jpg

为用户提供多个分类变量的 Pandas 数据框

我确保其中没有重复项。我想对它进行编码,我希望我的最终输出是这样的

http://img3.mukewang.com/614d72ab00013c2805980069.jpg

我尝试直接使用熊猫假人,但没有得到想要的结果。谁能帮我解决这个问题??


holdtom
浏览 251回答 3
3回答

海绵宝宝撒

IIUC,你user是空的,一切都在name。如果是这样,你可以pd.pivot_table(df, index=df.name.str[0], columns=df.name.str[1:].values, aggfunc='count').fillna(0)

红颜莎娜

您可以在拆分的每一行name使用r'(\d+)'从字母单独的数字,与使用pd.crosstab:d = pd.DataFrame(df.name.str.split(r'(\d+)').values.tolist())pd.crosstab(columns=d[2], index=d[1], values=d[1], aggfunc='count')

慕无忌1623718

假设以下数据帧:   user name0     1    a1     1    b2     1    c3     1    d4     2    a5     2    b6     2    c7     3    d8     3    e9     3    f你可以GROUPBY用户,然后使用get_dummmies:import pandas as pd# create data-framedata = [[1, 'a'], [1, 'b'], [1, 'c'], [1, 'd'], [2, 'a'],        [2, 'b'], [2, 'c'], [3, 'd'], [3, 'e'], [3, 'f']]df = pd.DataFrame(data=data, columns=['user', 'name'])# group and get_dummiesgrouped = df.groupby('user')['name'].apply(lambda x: '|'.join(x))print(grouped.str.get_dummies())输出      a  b  c  d  e  fuser                  1     1  1  1  1  0  02     1  1  1  0  0  03     0  0  0  1  1  1作为旁注,您可以在一行中完成所有操作:result = df.groupby('user')['name'].apply(lambda x: '|'.join(x)).str.get_dummies()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python