[英]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.