J'ai DataFrame comme ci-dessous:
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")
Et je liste de données: list = pd.to_datetime(['01.05.2019','15.08.2018', '25.07.2012'])
Et je dois ajouter à df column = "col1" où:
1 où df "day" = B et df "data" est dans "list"
0 sinon
J'ai donc besoin d'un résultat comme ci-dessous:
2 réponses
Vous pouvez utiliser pandas.DataFrame.apply
a>
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: J'ai changé list
en dates
, veuillez ne pas utiliser ce nom.
Vous pouvez utiliser isin
. Et vous devez également ajouter dayfirst=True
à to_datetime
, sinon le 01.05.2019 deviendra le 05-01-2019.
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')
Questions connexes
Questions liées
De nouvelles questions
python
Python est un langage de programmation multi-paradigme, typé dynamiquement et polyvalent. Il est conçu pour être rapide à apprendre, comprendre, utiliser et appliquer une syntaxe propre et uniforme. Veuillez noter que Python 2 est officiellement hors support à partir du 01-01-2020. Néanmoins, pour les questions Python spécifiques à la version, ajoutez la balise [python-2.7] ou [python-3.x]. Lorsque vous utilisez une variante Python (par exemple, Jython, PyPy) ou une bibliothèque (par exemple, Pandas et NumPy), veuillez l'inclure dans les balises.