簡體   English   中英

如果數據在列表中,則添加列 - Python Pandas 中的 DataFrame?

[英]Add column if data is on the list - DataFrame in Python Pandas?

我有 DataFrame 如下所示:

df = pd.DataFrame({"day" : ["A", "A", "B", "B"],
                    "data" : ["01.05.2019", "05.02.2019", "10.11.2019", "15.08.2018"]})
df["data"] = df["data"].astype("datetime64")

我列出了數據: list = pd.to_datetime(['01.05.2019','15.08.2018', '25.07.2012'])

我需要添加到 df column = "col1" 其中:
1 其中 df"day" = B 和 df"data" 在 "list" 中
0 否則

所以我需要如下結果:

在此處輸入圖像描述

您可以使用pandas.DataFrame.apply

df["col1"] = df.apply(lambda x: 1 if x.day == 'B' and x.data in dates else 0, axis = 1)
#  day       data  col1
#0   A 2019-01-05     0
#1   A 2019-05-02     0
#2   B 2019-10-11     0
#3   B 2018-08-15     1

PD:我將list更改為dates ,請不要使用該名稱。

您可以使用isin 而且您應該將dayfirst=True添加到to_datetime ,否則 01.05.2019 將變成 2019-01-05。

df = pd.DataFrame({"day" : ["A", "A", "B", "B"],
                "data" : ["01.05.2019", "05.02.2019", "10.11.2019", "15.08.2018"]})
df["data"] = pd.to_datetime(df["data"], dayfirst=True)

li = pd.to_datetime(['01.05.2019','15.08.2018', '25.07.2012'], dayfirst=True)

df['col1'] = ((df.day == 'B') & df.data.isin(li)).astype('int')

暫無
暫無

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

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