如何在Pandas中编写两个变量(列)的条件

2024-09-26 17:48:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试在没有登录但有一个card视图的情况下计数实例,并用count(或True)创建一个新列。我使用了下面的条件语句,得到了一个键错误。有人能帮我弄清楚发生了什么事吗?在

import pandas as pd
import numpy as np

sample = pd.DataFrame({ 'Month' : pd.Categorical(["Jan", "Jan", "Feb",  "Feb", "March","Apr", "May"]),
'Name' : pd.Categorical(["Peter", "Meg", "Peter", "Meg", "Meg","Lois", "Lois"]),
'Logins': [1, 1, 1, 1, 1, 1, 0],
'Card': [1, 1, 2, 2, 1, 2, 1]})

sample['LoginNoCard'] = sample['Logins'].where((sample['Logins'] == 0) & (sample['Card'] > 0), sample[1])

我这里的解决方案是创建一个新的数据帧。我想使用条件创建一个新列。如果登录名==0&Card>;0,则为0。如果登录次数>0且卡==0,则为1。艾尔斯南。在


Tags: sampleimport视图ascard条件janfeb
1条回答
网友
1楼 · 发布于 2024-09-26 17:48:29

可以考虑使用嵌套的np.where()条件来表示ifLogins == 0 & Card > 0,then0,ifLogins > 0 and Card == 0,then1,elseNaN。在

In [81]: np.where(((sample['Logins']==0) & (sample['Card']>0)), 0,
                    np.where(((sample['Logins']>0) & (sample['Card']==0)), 1,
                    pd.np.nan))
Out[81]: array([ nan,  nan,  nan,  nan,  nan,  nan,   0.])

要将其分配给列,可以

^{pr2}$

相关问题 更多 >

    热门问题