【问题标题】:Applying function to pandas dataframe column after str.findall在 str.findall 之后将函数应用于熊猫数据框列
【发布时间】:2021-06-24 14:01:03
【问题描述】:

我有这样一个数据框df 有两列:

Col1 Col2
'abc-def-ghi' 1
'abc-opq-rst' 2

我创建了一个新列Col3,如下所示:

df['Col3'] = df['Col1'].str.findall('abc', flags=re.IGNORECASE) 

后来得到了这样一个数据框:

Col1 Col2 Col3
'abc-def-ghi' 1 [abc]
'abc-opq-rst' 2 [abc]

我现在要做的是创建一个新列 Col4,如果 Col3 包含 'abc',则我得到一个列,否则为零。

我试图用一个函数来做到这一点:

def f(row):
    if row['Col3'] == '[abc]':
        val = 1
    else:
        val = 0
    return val

并将其应用于我的 pandas 数据框:

df['Col4'] = df.apply(f, axis=1)

但我只得到 0,也在包含“abc”的列中。我认为我的 if 语句有问题。 我该如何解决这个问题?

【问题讨论】:

    标签: python pandas python-re


    【解决方案1】:

    做事

    df['Col4'] = df.Col3.astype(bool).astype(int)
    

    【讨论】:

      猜你喜欢
      • 2019-02-07
      • 2018-11-13
      • 1970-01-01
      • 2021-02-12
      • 1970-01-01
      • 2017-08-23
      • 2017-11-29
      • 2020-12-02
      相关资源
      最近更新 更多