根据 Python Dataframe 中另一列的数值在新列中分配分类或值
Assigning categorical or values in a new column based on numeric values from another column in Python Dataframe
我有一个数据框,其中有一列(比如“总计”)包含数字数据。此列中的数据可以是正数、负数或零。零的两边没有范围限制。
我想根据此 'Total' 列中的值创建另一个包含特定指标或分类值的列。
例如(目标):
- P/N/Z 基于 'Total' 列中的 Positive/Negative/Zero 值。
- 类 例如“...0-10000,10000-20000,...”基于 'Total' 列中的值
- +1,-1,0 基于大于、小于、等于 'Total' 列中特定值的值。
截至目前,我通过 if-else 语句遍历 'Total' 列中的每一行来创建一个单独的值列表,然后将该值列表作为一列附加到数据框。
for each in df['Total']:
values.append(cat1(each))
df['newcol'] = values
这里的cat1是returnsP/N/Z基于positive/negative/zero值的函数。 values 是我将使用此 for 循环创建的值列表。同样,我有上述目标中的 2 和 3 函数。
def cat1(value):
if value > 0:
return "P"
elif value < 0:
return "N"
else:
return "Z"
但我希望有一个更简单、更快的替代方案?
感谢您的帮助。
我不知道这种方法是否更快,但它肯定更好地利用了 pandas 功能:
def cat1(value):
if value > 0:
return "P"
elif value < 0:
return "N"
else:
return "Z"
df[newcol] = df.apply(lambda row: cat1(row['Total']), axis = 1)
我有一个数据框,其中有一列(比如“总计”)包含数字数据。此列中的数据可以是正数、负数或零。零的两边没有范围限制。
我想根据此 'Total' 列中的值创建另一个包含特定指标或分类值的列。
例如(目标):
- P/N/Z 基于 'Total' 列中的 Positive/Negative/Zero 值。
- 类 例如“...0-10000,10000-20000,...”基于 'Total' 列中的值
- +1,-1,0 基于大于、小于、等于 'Total' 列中特定值的值。
截至目前,我通过 if-else 语句遍历 'Total' 列中的每一行来创建一个单独的值列表,然后将该值列表作为一列附加到数据框。
for each in df['Total']:
values.append(cat1(each))
df['newcol'] = values
这里的cat1是returnsP/N/Z基于positive/negative/zero值的函数。 values 是我将使用此 for 循环创建的值列表。同样,我有上述目标中的 2 和 3 函数。
def cat1(value):
if value > 0:
return "P"
elif value < 0:
return "N"
else:
return "Z"
但我希望有一个更简单、更快的替代方案?
感谢您的帮助。
我不知道这种方法是否更快,但它肯定更好地利用了 pandas 功能:
def cat1(value):
if value > 0:
return "P"
elif value < 0:
return "N"
else:
return "Z"
df[newcol] = df.apply(lambda row: cat1(row['Total']), axis = 1)