Python如何提取pandas数据框中[]括号内的指定字符串并使用 bool 值创建一个新列

标签 python string python-2.7 pandas extract

我是编程新手,非常感谢您的见解!

我有一个像这样的数据框。

df;

            info                Price  
0   [100:Sailing]                $100
1   [150:Boating, 100:Sailing]   $200
2   [200:Surfing]                $300

我想根据信息列中的信息创建带有事件名称的新列,如果信息列中有相应的名称,则在新列中添加 1。它看起来像下面的数据框。

   Price  Sailing  Boating  Surfing
0   $100       1         0        0
1   $200       1         1        0
2   $300       0         0        1

我尝试了代码打击,但没有成功..(尽管这种方法在其他专栏中有效)

df1 = df.info.str.extract(r'(Boating|Sailing|Surfing)',expand=False)
df2 = pd.concat([df,pd.get_dummies(df1).astype(int)],axis=1)

我有超过一万个这样的数据,所以理想情况下我想编写一个代码,自动提取信息列中指定的字符串(如冲浪),使用事件名称创建一个新列并返回 1 或 0,如上所示。我认为数据框中的数据或数据类型中的括号可能导致了问题,但我不确定如何解决这个问题..

最佳答案

我假设信息列中值的格式类似于 Python 列表。

df1 = df['info'].str[1:-1].str.replace(' ', '').str.get_dummies(',')
df1.rename(columns=lambda x: x.rsplit(':')[-1], inplace=True)
df2 = pd.concat([df, df1.astype(int)], axis=1)

df2
Out: 
                         info Price  Sailing  Boating  Surfing
0               [100:Sailing]  $100        1        0        0
1  [150:Boating, 100:Sailing]  $200        1        1        0
2               [200:Surfing]  $300        0        0        1

关于Python如何提取pandas数据框中[]括号内的指定字符串并使用 bool 值创建一个新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38838519/

相关文章:

javascript - 使用 JavaScript/Python/Bash 管理 API 调用

string - 如何在GOlang中打印与右侧对齐的星形图案

php - 将数字转换为excel的字符串

python - 如何在 matplotlib 中设置 inset_axes 位置

python - 对内联排序的简单尝试返回 None,不知道为什么

python - python中各种import语句的区别

python - 迭代 python 字典中的单个维度

python - pydantic 与 mypy 的使用

swift - 使用 Swift 将 NSAttributedString 转换为 NSString

python - 比较运算符 < 和 > 如何将函数用作操作数?