python中的数据计算

python中的数据计算,python,pandas,jupyter-notebook,Python,Pandas,Jupyter Notebook,我有: 并希望添加一列“ColumnX”,该列需要将值计算为: A1 A2 Random data Random data2 Average Stddev 0 0.1 2.0 300 3000 1.05 1.343503 1 0.5 4.5 4500 450 2.50 2.828427 2 3.0 1.2 800 80 2

我有:

并希望添加一列“ColumnX”,该列需要将值计算为:

    A1   A2  Random data  Random data2  Average    Stddev
0  0.1  2.0          300          3000     1.05  1.343503
1  0.5  4.5         4500           450     2.50  2.828427
2  3.0  1.2          800            80     2.10  1.272792
3  9.0  9.0          900            90     9.00  0.000000
我得到一个错误:

ColumnX = min(df['Random data']-df['Average'],df[Random data2]-
df[Stddev])/3.0*df['A2'])

您的错误与熊猫更喜欢按位运算符有关,并且使用内置的min函数无法按行工作

一个可能的解决方案是创建两个新的计算列,然后使用pandas dataframe.min方法

ValueError: The truth value of a Series is ambiguous.

方法minaxis=1将按行查找两列之间的min,然后分配给新列。这种方法很有效,因为您使用的是numpy矢量化,而且更易于阅读

让我们看看你认为输出应该是什么。换言之,我们希望明确了解您认为应该如何进行计算。谢谢。我刚刚修改了:df['calc_col_2']=df['Random data2']-df['Stddev'],并添加了:df['colx']=df['min_col']]/3.0*df['A2'],使数学正确。再次感谢。
df['calc_col_1'] = df['Random data']-df['Average']
df['calc_col_2'] = (df['Random data2']-df['Stddev'])/(3.0*df['A2'])
df['min_col'] = df[['calc_col_1','calc_col_2']].min(axis=1)