簡體   English   中英

Python - 使用 lambda 在 DataFrame 列中應用 rsplit

[英]Python - Apply rsplit in DataFrame column using lambda

我有一個 dataframe 具有以下結構(3列):

DATE,QUOTE,SOURCE
2019-11-21,1ºTEST/2ºTEST DONE, KAGGLE

我想要做的是在 QUOTE 列上創建一個 substring 以便僅使用最后一次出現之后的單詞(在本例中為“TEST”)生成一個新列。

我的預期結果:

DATE,QUOTE, SATUS, SOURCE
2019-11-21,1ºTEST/2ºTEST DONE, DONE, KAGGLE

為此,我正在嘗試使用以下代碼:

import pandas as pd
df = pd.read_excel (filename)
split = lambda x: len(x['QUOTE'].rsplit('TEST',1)[0])
df["STATUS"] = df.apply(split, axis=1)
print(df["STATUS"].unique())

但是我只是打印數字而不是“完成”。

我做錯了什么?

謝謝!

在 split 的定義中,您使用的是len ,它返回序列的長度(整數),

len([1, 'Done'])  # returns 2

您需要訪問最后一個索引,例如:

df['STATUS'] = df.QUOTE.str.rsplit('TEST').str[-1]
print(df)

Output

         DATE               QUOTE  SOURCE STATUS
0  2019-11-21  1ºTEST/2ºTEST DONE  KAGGLE   DONE

或者如果您想使用 apply,只需更改 split 的定義:

split = lambda x: x['QUOTE'].rsplit('TEST', 1)[-1]
df["STATUS"] = df.apply(split, axis=1)
print(df)

Output

         DATE               QUOTE  SOURCE STATUS
0  2019-11-21  1ºTEST/2ºTEST DONE  KAGGLE   DONE

請注意,使用 lambda 創建命名函數不是很好的做法。

暫無
暫無

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

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