簡體   English   中英

使用 python 轉換列中的值

[英]Transform values in column using python

我想通過刪除空格來轉換字符串,用句點替換並刪除前兩個值。

數據

ID  Date    Stat
AA  Q1 2022 ok
CC  Q2 2022 yes
    
    

期望的

ID  Date    Stat
AA  Q1.22   ok
CC  Q2.22   yes

正在做

df['Date'].str[-2:]

我不知道如何擴展這一點,任何建議表示贊賞。

我建議使用df.apply來調整值。 df["Date"].apply(transform)迭代列Date中的每個值,並將在每個空格上拆分字符串,僅保留第二個字符串中的最后 2 個字符,然后使用句點將它們連接起來。

def transform(string):
    lst = string.split(" ")
    lst[1] = lst[1][-2:]
    return ".".join(lst)

df["Date"] = df["Date"].apply(transform)

假設我們的字符串如下:

s = "Q1 2022"

我們可以刪除空白字符並將字符串拆分為如下所示:

pieces = s.split()
print(pieces)

結果是:

pieces = ['Q1', '2022']

您可以將年份'2022'更改為'22' ,如下所示:

pieces = ['Q1', '2022']
# pieces[0] == "Q1"
# pieces[1] == '2022'
pieces[1] = pieces[1][-2:]

最后,我們有這樣的東西:

def foobar(old_string:str) -> str:
    """
        EXAMPLE
            INPUT:  "Q1 2022"
            OUTPUT: "Q1.22"
    """
    old_string = "".join(str(ch) for ch in old_string)
    pieces = old_string.split()
    pieces[1] = pieces[1][-2:]
    new_string = ".".join(pieces)
    return new_string
    
result = foobar("Q1 2022")
print(result)
# prints "Q1.22"

我認為最直接的方法是將前兩個字符、句點和最后兩個字符連接起來。 像這樣的東西:

df['Date'] = df['Date'].str[:2] + "." + df['Date'].str[-2:]

只需用句點替換空格和兩位數字:

df.Date = df.Date.str.replace(" \d\d", ".")

我們可以做的

df['Date'] = pd.to_datetime(df['Date'],format = 'Q%d %Y').dt.strftime('Q%d.%y')
Out[624]: 
0    Q01.22
1    Q02.22
Name: Date, dtype: object

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM