簡體   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