作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Pandas 框架的新手,我已经进行了足够的搜索来解决我的问题,但没有在网上获得太多帮助。
我有一个字符串列,如下所示,我想将其转换为单独的列。我的问题是我尝试拆分它,但它没有按照我需要的方式提供输出。
*-----------------------------------------------------------------------------*
| Total Visitor |
*-----------------------------------------------------------------------------*
| 2x Adult, 1x Adult + Audio Guide |
| 2x Adult, 2x Youth, 1x Children |
| 5x Adult + Audio Guide, 1x Children + Audio Guide, 1x Senior + Audio Guide |
*-----------------------------------------------------------------------------*
这是我用来分割字符串的代码,但没有给出预期的输出。
df = data["Total Visitor"].str.split(",", n = 1, expand = True)
分割字符串后我的预期输出应如下表所示:
*----------------------------------------------------------------------------------------------------------------*
| Adult | Adult + Audio Guide | Youth | Children | Children + AG | Senior + AG
*----------------------------------------------------------------------------------------------------------------*
| 2x Adult | 1x Adult + Audio Guide | - | - | - | -
|
| 2x Adult | - |2x Youth | 1x Children | - | -
| - | 5x Adult + Audio Guide | - | - |1x Children + Audio Guide| 1x Senior + Audio Guide |
*----------------------------------------------------------------------------------------------------------------*
我该怎么做?任何帮助或指导都会很棒。
最佳答案
想法是创建字典列表,其中包含已删除数字的键 x
通过 regex
-^\d+x\s+
( ^
是字符串的开头, \d+
是一个或多个整数, \s+
是一个或多个空格)并传递给 DataFrame
构造函数:
import re
L =[dict([(re.sub('^\d+x\s+',"",y),y) for y in x.split(', ')]) for x in df['Total Visitor']]
df = pd.DataFrame(L).fillna('-')
print (df)
Adult Adult + Audio Guide Youth Children \
0 2x Adult 1x Adult + Audio Guide - -
1 2x Adult - 2x Youth 1x Children
2 - 5x Adult + Audio Guide - -
Children + Audio Guide Senior + Audio Guide
0 - -
1 - -
2 1x Children + Audio Guide 1x Senior + Audio Guide
另一个类似的想法被 x
分割对于来自字典键的列名称:
L = [dict([(y.split('x ')[1], y) for y in x.split(', ')]) for x in df['Total Visitor']]
df = pd.DataFrame(L).fillna('-')
关于python - Pandas Dataframe - 将字符串拆分为多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60679883/
我是一名优秀的程序员,十分优秀!