Python 如何根据用户在运行时选择的逻辑创建新列

Python 如何根据用户在运行时选择的逻辑创建新列,python,pandas,dynamic,Python,Pandas,Dynamic,我希望能够根据用户选择的公式在数据框中创建一个新列。答案是显而易见的,当公式选择在运行之前已知时,但我不确定在运行之前公式未知的情况下如何继续 数据帧中的列数可能不同,每个公式的变量/操作数也可能不同,因此lambda函数似乎不合适 例如,df在A列中有整数值,在B列中有浮点值。有3个公式 1-将A中的值与B中的值相加 2-从A中的值的平方中减去B中的值 3-将A中的值与B中的值相加 用户在运行时输入1、2或3,并使用相应的公式创建具有适当值的列C def get_formula(user_in

我希望能够根据用户选择的公式在数据框中创建一个新列。答案是显而易见的,当公式选择在运行之前已知时,但我不确定在运行之前公式未知的情况下如何继续

数据帧中的列数可能不同,每个公式的变量/操作数也可能不同,因此lambda函数似乎不合适

例如,df在A列中有整数值,在B列中有浮点值。有3个公式

1-将A中的值与B中的值相加 2-从A中的值的平方中减去B中的值 3-将A中的值与B中的值相加 用户在运行时输入1、2或3,并使用相应的公式创建具有适当值的列C

def get_formula(user_input):
  formula = None
  if user_input == 1:
    formula = lambda x: x['A'] + x['B']
  elif user_input == 2:
    formula = lambda x: x['A']**2 - x['B']
  elif user_input == 3:
    # Your conditions for user inputs 1 or 3 seem to be the same.
    formula = lambda x: x['A'] + x['B']
  else:
    # Error out
    pass
  return formula

df = pd.DataFrame({'A': list(range(5)), 'B': list(range(5))})

# Get user input (assumes it's an integer)
user_input = int(input('Enter formula #: '))
# Get formula based on input
fn = get_formula(user_input)
# Assign new column 'C' based on formula
df.assign(C=fn)

# Assuming user input is 1, this outputs:
   A  B  C
0  0  0  0
1  1  1  2
2  2  2  4
3  3  3  6
4  4  4  8

您可以与运行时确定的公式一起使用。这充分利用了函数作为Python中的对象的优势。

到目前为止,您尝试了什么?你能不能在程序中间请求用户输入并相应地创建列?你能解释为什么lambda函数不能工作吗?在运行时之前,公式的含义是未知的。在运行时,用户通过GUI选择列和操作来定义公式。在运行时的不同阶段,用户可以通过选择已存储的公式或定义新公式来创建新列。我曾尝试提取一个公式,对象属性包括值、操作等,但这条路线导致混乱和无效code@PavanKumar在提供的示例中,用于创建列C的公式在运行时之前是未知的,因为用户没有从选项1中选择,2和3,直到runtim出现提示,这正是我想要的。非常感谢。