繁体   English   中英

如何使用 Python 查看数据框中一列的值并根据这些结果在另一列中附加一个新值?

[英]How do I use Python to look at the values of one column in a dataframe and append a new value in another column based on those results?

我有一个 CSV 文件,其中有一列充满类似于此的值...

A栏
嗨[第一]!
谢谢你!
什么车?
你是[第一个][最后一个]吗?
你可知道?
节省 25% [第一]!
返还 2,000 美元!
拥抱前方的路
每个人都可以节省 30%!

我想做的是构建一些通过 A 列的逻辑,然后根据找到的逻辑为 B 列分配一个新值。

例如,最终结果将如下所示......

A栏 B栏
嗨[第一]! 个性化
谢谢你! 感激
什么车? 好奇心
你是[第一个][最后一个]吗? 个性化
你可知道? 好奇心
节省 25% [第一]! 个性化
返还 2,000 美元! 提供
拥抱前方的路 通用的
每个人都节省 30% 提供

我希望逻辑在继续下一步之前找到它与 A 列匹配的任何实例。 例如,有两个值具有百分比,但一个是个性化的。 我想将个性化放在层次结构的顶部,然后说其他任何具有“保存”或百分比的内容都可能是要约。

我的代码的开头看起来与此类似。 我知道逻辑完全错误,但我不知道我需要做什么来修复它并获得我正在寻找的结果。 任何帮助将非常感激!

import pandas as pd
import glob
import re
import numpy as np

header_names=['Line', 'Type']
df = pd.read_csv('2021 Lines Types.csv',header=None, skiprows=1, names=header_names)

for i in df:
    if re.search('[First]|[Last]', df.columnA):
      columnB.append("Personalized")
    elif re.search('Save', df.columnA):
        columnB.append('Savings')

在这种情况下,我会使用np.select 它需要一个条件列表和一个相同长度的替换值列表。 对于每个条件,它匹配的所有值都将替换为相应的值。 当没有任何条件匹配时, np.select还将默认值作为第三个参数。

conds = [
    df['Column A'].str.contains(r'\[(?:First|Last)\]'),
    df['Column A'].str.contains('Save'),
    df['Column A'].str.contains('?', regex=False),
    df['Column A'].str.contains('Thank', regex=False),
]

vals = [
    'Personalized',
    'Offer',
    'Curiosity',
    'Gratitude',
]

df['Column B'] = np.select(conds, vals, 'Generic')

输出:

>>> df
                  Column A      Column B
0              Hi [First]!  Personalized
1               Thank You!     Gratitude
2                What Car?     Curiosity
3  Are you [First] [Last]?  Personalized
4            Did you know?     Curiosity
5        Save 25% [First]!  Personalized
6         Get $2,000 Back!       Generic
7   Embrace the road ahead       Generic
8      Everyone saves 30%!       Generic

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM