Python 如何根据用户在运行时选择的逻辑创建新列
我希望能够根据用户选择的公式在数据框中创建一个新列。答案是显而易见的,当公式选择在运行之前已知时,但我不确定在运行之前公式未知的情况下如何继续 数据帧中的列数可能不同,每个公式的变量/操作数也可能不同,因此lambda函数似乎不合适 例如,df在A列中有整数值,在B列中有浮点值。有3个公式 1-将A中的值与B中的值相加 2-从A中的值的平方中减去B中的值 3-将A中的值与B中的值相加 用户在运行时输入1、2或3,并使用相应的公式创建具有适当值的列CPython 如何根据用户在运行时选择的逻辑创建新列,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
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出现提示,这正是我想要的。非常感谢。