当前位置: 首页 > 知识库问答 >
问题:

尝试通过使用if语句筛选另一列,在dataframe中创建新列

祁景山
2023-03-14

在我的熊猫数据框架中,尝试创建一个名为loan\u status\u的列非常好。如果贷款状态为“当前”或“已全额支付”,则应包含整数1。否则,应包含整数0。

我使用https://resources.lendingclub.com/LoanStats_2018Q4.csv.zip作为我的数据集。

我的问题代码是:

def loan_great():
   if (df['loan_status']).any == 'Current' or (df['loan_status']).any == 'Fully Paid':
     return 1
   else:
     return 0

df['loan_status_is_great']=df['loan_status'].apply(loan_great())

()----

/usr/local/lib/python3.6/dist-packages/pandas/core/series.py在应用(自我,功能,convert_dtype,参数,**kwds)4043其他:4044值=self.astype(html" target="_blank">对象)。

熊猫/_libs/lib.pyx_libs.lib.map_infer()

TypeError:“int”对象不可调用

共有2个答案

西门振
2023-03-14

我发现numpy where函数对于这些简单的列创建来说是一个很好的选择,同时保持良好的速度。类似于以下的方法应该可以工作:

import numpy as np
df['loan_status_is_great'] = np.where(df['loan_status']=='Current'|
                                      df['loan_status']=='Fully Paid',
                                      1,
                                      0)
梁承恩
2023-03-14

让我们尝试使用isin创建布尔级数并转换为整数的另一种方法:

df['loan_status'].isin(['Current','Fully Paid']).astype(int)
 类似资料:
  • 我有一个包含3列的数据表,我想使用列投影的值创建一个新列。 应该如何从投影中选择值?--它应该选择前一年投影的3个具体值--如果您要为2020年创建一个新列,它应该从2021年、2022年和2023年选择值 我已经尝试了以下SQL: spark.sql(''从表中选择serial_number,pit_pd_proj为proj1,year,lead(pit_pd_proj,3)over(parti

  • 现在,我想在一个函数中使用这个,如下所示- 然后使用此函数在我的DataFrame中创建一个新列 总之,我希望我的列“new_col”是一个类型数组,其值为[[x,x,x]] 我得到以下错误。我在这里做错了什么? 原因:java.lang.UnsupportedOperationException:不支持org.apache.spark.sql.Column类型的模式

  • 我有一个火花RDD(或Dataframe-转换成任何一个都不是问题),具有以下列(每个结构的示例): 我想扩展这个RDD/DF,以增加一个包含列表数组大小的列。所以输出应该是这样的(示例): 我试图做一个

  • 我想根据列_1和列_2或列_3中的值创建一个新列“column_new”。如果列_1=='C',则列_new的值与列_2相同,但如果列_1=='G',则列_new的值与列_3相同。 我试过: 错误:值错误:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。 还尝试: 错误:值错误:数据帧的真值不明确。使用a.empty、a.bool()、a.

  • 我有一个数据框,如: 我需要为每个列应用一些函数,并在这个数据帧中创建具有特殊名称的新列。 所以我需要根据列和(如name)乘以两个额外的列,名称为和由两个。是否可以使用或其他结构来完成此操作?

  • 我正在使用php和mysqli创建登录页面,但是,当我键入错误的用户名和密码时,它无法显示错误消息。 如果我输入了错误的用户名,它只是无法登录,但$error没有出现,我试图将其更改为echo,但出现了错误,在我登录或键入任何内容之前,它将始终回显错误消息。我认为这意味着代码总是运行else语句。 有人知道我的代码出了什么问题吗?