gpt4 book ai didi

python - Python/Pandas 中的 R/ifelse 等价物?比较字符串列?

转载 作者:IT老高 更新时间:2023-10-28 21:13:15 25 4
gpt4 key购买 nike

我的目标是比较两列并添加结果列。 R 使用 ifelse 但我需要知道 pandas 的方式。

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

Pandas

>>> 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

我尝试了一些案例,但没有成功。似乎字符串比较不起作用。

>>>np.where(maupayment['log_month'] == maupayment['install_month'], 'install', 'existing')

TypeError: 'str' object cannot be interpreted as an integer

你能帮帮我吗?


Pandas 和 numpy 版本。

>>> pd.version.version
'0.16.2'
>>> np.version.full_version
'1.9.2'

更新版本后,它工作了!

>>> np.where(maupayment['log_month'] == maupayment['install_month'], 'install', 'existing')
array(['existing', 'install', 'existing', ..., 'install', 'install',
'install'],
dtype='<U8')

最佳答案

您必须将 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']

关于python - Python/Pandas 中的 R/ifelse 等价物?比较字符串列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35666272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com