【问题标题】:Is there a way to replace True/False with string values in Pandas?有没有办法用 Pandas 中的字符串值替换 True/False?
【发布时间】:2021-09-27 11:57:38
【问题描述】:

pandas 数据框如下所示:

     job_url

0    https://neuvoo.ca/view/?id=34134414434
1    https://zip.com/view/?id=35453453454
2    https://neuvoo.com/view/?id=2452444252

我想把所有以“https://neuvoo.ca”开头的字符串变成“Canada”。

我对此的解决方案是使用 str.startswith 进行搜索,然后将 True 替换为 'Canada'

csv_file['job_url'] = csv_file['job_url'].str.startswith('https://neuvoo.ca/')
csv_file['job_url']  = replace({'job_url': {np.True: 'Canada', np.False: 'USA'}})

但发现它并没有用字符串替换布尔值。

【问题讨论】:

  • 示例应尽可能运行。Henry Ecker 的示例非常棒。

标签: python python-3.x pandas dataframe replace


【解决方案1】:

让我们改用np.where

import numpy as np
import pandas as pd

csv_file = pd.DataFrame({
    'job_url': ['https://neuvoo.ca/view/?id=34134414434',
                'https://zip.com/view/?id=35453453454',
                'https://neuvoo.com/view/?id=2452444252']
})


csv_file['job_url'] = np.where(
    csv_file['job_url'].str.startswith('https://neuvoo.ca/'),
    'Canada',
    'USA'
)
  job_url
0  Canada
1     USA
2     USA

replace 也可以,但TrueFalse 不是np.True/np.False

csv_file['job_url'] = (
    csv_file['job_url'].str.startswith('https://neuvoo.ca/')
        .replace({True: 'Canada', False: 'USA'})
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-05
    • 1970-01-01
    • 2018-04-27
    • 2020-07-29
    • 2022-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多