gpt4 book ai didi

Python 使用列表理解或 apply() 返回特定列

转载 作者:行者123 更新时间:2023-12-01 00:53:57 24 4
gpt4 key购买 nike

我正在尝试将 R 代码转换为 Python 代码,但卡在了这一点。您能告诉我在 Python 中实现此代码片段的最佳方法是什么吗?

only0_0$count =0
for(i in 2:length(only0_0$ID))
{
only0_0$count[i]=ifelse((only0_0$year[i]-1) %in%
clientData$Year[clientData$CUSTOMERID %in% only0_0$ID[i]],1,0)
}

背景:

  1. clientData 和 only0_0 都是 DataFrame。
  2. 客户数据{列:年份、客户 ID、...}
  3. only0_0 {列:年份、ID}
  4. ID 和 CustomerID 都代表相同的事物,并且在相应的表中不是唯一的。
  5. 仅按 {'ID','year'} 排序 0_0

伪代码:

  1. 在 only0_0 中,创建新列“count”将全部为零。
  2. for 循环从第二个观察到最后一个,将“count”变量填充为:

    • 从 clientData 中选择所有“CustomerID”,其中 only0_0 中的“ID”与特定行匹配。
    • 例如仅0_0.ID == 3197
    • clientData.CustomerID 将返回 customerID=3197 的所有行 ID
    • 例如最后一步的输出:rowid(或 Python 中的索引){3,11, 81, 87}
    • 从上一步返回的行 ID 中提取相应的年份值
    • 例如最后一步的输出:{2006, 2008, 2009, 2006}

    • 假设:(only0_0.year - 1) == 2008 的输出

    • 自 2008 年起为 {2006, 2008, 2009, 2006},计数 = 1

现在是否清楚请告诉我。

最佳答案

如果不知道 only0_0clientData 具体是什么,这是相当困难的,但这里有一些片段可以帮助您:

我假设 only0_0 是一个 pandas.DataFrameclientData 一个字典,因为它不包含统一数据。

例如

import pandas as pd
clientData = {'Year': [..., ...], 'CUSTOMERID_transformed': ....}
only0_0 = pd. DataFrame({'count': [1, 2, 3, ...], 'year': [2010, 2012, 2019, ...]})
only0_0.loc[i, 'count'] = 0
for i in range(1, only0_0.shape[0]): # i.e. skipping the first row
only0_0.loc[i, 'count'] = 0 if ... else 1

... = int(1-bool(...))

但我认为写起来更Pythonic

if ...:
only0_0.loc[i, 'count'] = 0
else:
only0_0.loc[i, 'count'] = 1

现在对于条件,我认为它是由以下组成的

(only0_0.loc[i, 'year'] - i) in clientData['Year'][...]

clientData['CUSTOMERID_transformed'] in only0_0.loc[i, 'ID0_0']

编辑:你的注释表明,相反

only0_0.loc[i, 'ID0_0'] in clientData['CUSTOMERID_transformed'] 

我希望这对您有所帮助。

关于Python 使用列表理解或 apply() 返回特定列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56361901/

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