使用另一列中的值创建新类别

2024-06-25 06:11:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我的数据集当前有1列具有不同的商机类型。我有另一列,其中有一个虚拟变量,用于判断opportunity是否为首次客户

import pandas as pd

df = pd.DataFrame(
  {"col_opptype": ["a", "b", "c", "d"],
  "col_first": [1,0,1,0] }
  )

我想基于col_first在col_opptype中创建一个新类别。其中,只有1个类别(即a)将首先与其对应的列相匹配 即

  • col_opptype={a_first,a_notfirst,b,c,d}
  • col_first={1,0}

其中:

  • a_first是当col_opptype=a和col_first=1时
  • a_notfirst是当col_opptype=a和col_first=0时

期望输出:

  col_opptype  col_first
0     a_first          1
1           b          0
2           c          1
3  a_notfirst          0

我正在研究Python,并且是一个相对较新的用户,因此我希望上述内容有意义。谢谢大家!


Tags: 数据import类型pandasdf客户ascol
1条回答
网友
1楼 · 发布于 2024-06-25 06:11:34

这将解决您的问题:) 请在下一个问题中添加您的代码尝试和至少一个示例数据帧定义,这样我们就不必发明示例来帮助您。最后结果应该是什么样的一个确切例子也很好:)

编辑我根据您更改的问题调整了代码

import pandas as pd

df = pd.DataFrame(
  {"col_opptype": ["a", "b", "c", "d"],
  "col_first": [1,0,1,0] }
  )
def is_first_opptype(opptype: str, wanted_type:str, first: int):
  if first and opptype == wanted_type:
    return opptype + "_first"
  elif not first and opptype == wanted_type:
    return opptype + "_notfirst"
  else:
    return opptype
df["col_opptype"] = df.apply(lambda x: is_first_opptype(x["col_opptype"], 
x["col_first"], "a"), axis=1)

print(df)

输出:

  col_opptype  col_first
0     a_first          1
1           b          0
2           c          1
3           d          0

相关问题 更多 >