python中的数据计算
我有: 并希望添加一列“ColumnX”,该列需要将值计算为: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
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)