zon*_*ono 20 python numpy r pandas
我的目标是比较两列并添加结果列.R使用ifelse,但我需要知道熊猫的方式.
[R
> head(mau.payment)
log_month user_id install_month payment
1 2013-06 1 2013-04 0
2 2013-06 2 2013-04 0
3 2013-06 3 2013-04 14994
> mau.payment$user.type <-ifelse(mau.payment$install_month == mau.payment$log_month, "install", "existing")
> head(mau.payment)
log_month user_id install_month payment user.type
1 2013-06 1 2013-04 0 existing
2 2013-06 2 2013-04 0 existing
3 2013-06 3 2013-04 14994 existing
4 2013-06 4 2013-04 0 existing
5 2013-06 6 2013-04 0 existing
6 2013-06 7 2013-04 0 existing
Run Code Online (Sandbox Code Playgroud)
熊猫
>>> maupayment
user_id log_month install_month
1 2013-06 2013-04 0
2013-07 2013-04 0
2 2013-06 2013-04 0
3 2013-06 2013-04 14994
Run Code Online (Sandbox Code Playgroud)
我尝试了一些案例,但没有奏效.似乎字符串比较不起作用.
>>>np.where(maupayment['log_month'] == maupayment['install_month'], 'install', 'existing')
TypeError: 'str' object cannot be interpreted as an integer
Run Code Online (Sandbox Code Playgroud)
请问你能帮帮我吗?
熊猫和numpy版本.
>>> pd.version.version
'0.16.2'
>>> np.version.full_version
'1.9.2'
Run Code Online (Sandbox Code Playgroud)
更新版本后,它工作正常!
>>> np.where(maupayment['log_month'] == maupayment['install_month'], 'install', 'existing')
array(['existing', 'install', 'existing', ..., 'install', 'install',
'install'],
dtype='<U8')
Run Code Online (Sandbox Code Playgroud)
jez*_*ael 16
您必须将pandas升级到上一版本,因为在版本中0.17.1它非常有效.
样本(列中的第一个值install_month被更改以进行匹配):
print maupayment
log_month user_id install_month payment
1 2013-06 1 2013-06 0
2 2013-06 2 2013-04 0
3 2013-06 3 2013-04 14994
print np.where(maupayment['log_month'] == maupayment['install_month'], 'install', 'existing')
['install' 'existing' 'existing']
Run Code Online (Sandbox Code Playgroud)