gpt4 book ai didi

python - 将数据帧的数据点转换为列

转载 作者:太空宇宙 更新时间:2023-11-03 16:45:45 24 4
gpt4 key购买 nike

我有一个 df:

   name    sample
1 a Category 1: qwe, asd (line break) Category 2: sdf, erg
2 b Category 2: sdf, erg(line break) Category 5: zxc, eru
...
30 p Category 1: asd, Category PE: 2134, EFDgh, Pdr tke, err

我需要结束:

   name    qwe   asd   sdf   erg   zxc   eru 2134  EFDgh  Pdr tke  err
1 a 1 1 1 1 0 0 0 0 0 0
2 b 0 0 1 1 1 1 0 0 0 0
...
30 p 0 1 0 0 0 0 0 1 1 0

老实说,我什至不知道从哪里开始,我的第一个想法是在换行符处将其拆分,但之后我有点迷失了。

最佳答案

IIUC 你可以使用str.findall使用正则表达式模式查找包含 negative lookbehind and lookahead 的 3 个字符的所有单词对于非字符符号。然后您可以使用str.join加入获得的列表。并使用 str.get_dummies 获取您的假人。然后你可以删除额外的列:

df['new'] = df['sample'].str.findall('(?<!\w)\w{3}(?!\w)')
df_dummies = df['new'].str.join('_').str.get_dummies(sep='_')
df = pd.concat([df, df_dummies], axis=1)

In [215]: df['new']
Out[215]:
1 [qwe, asd, sdf, erg]
2 [sdf, erg, zxc, eru]
Name: new, dtype: object

In [216]: df
Out[216]:
name sample new asd erg eru qwe sdf zxc
1 a Category 1: qwe, asd (line break) Category 2: ... [qwe, asd, sdf, erg] 1 1 0 1 1 0
2 b Category 2: sdf, erg(line break) Category 5: z... [sdf, erg, zxc, eru] 0 1 1 0 1 1

删除额外的列后,您将得到结果:

df = df.drop(['sample', 'new'], axis=1)

In [218]: df
Out[218]:
name asd erg eru qwe sdf zxc
1 a 1 1 0 1 1 0
2 b 0 1 1 0 1 1

关于python - 将数据帧的数据点转换为列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36323030/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com