[英]How do i lookup a row on one dataframe based on the column cell value and append that to a row on another dataframe?
[英]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.