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