如何在Pandas列上执行数学运算并将其保存为新数据框架

5
                  a          b           c
6/29/2018   0.744189037 0.251833984 0.632784618
6/30/2018   0.476601558 0.694181607 0.7951655
7/1/2018    0.91376258  0.111712256 0.813708374
7/2/2018    0.849505199 0.037035716 0.973137932

我正在尝试使用这个数据框,并基于数学运算创建一个新的数据框。到目前为止,我已经使用以下代码: df3 = df2[['a','b']] and df4 = pd.DataFrame(df3[['a']]*2 - df3[['b']])
简而言之,我想使用df3,将列a乘以2并减去列b的值,然后将结果放入全新的数据框中。
我希望得到的最终输出是:
               2*a-b
6/29/2018   1.23654409
6/30/2018   0.259021508
7/1/2018    1.715812903
7/2/2018    1.661974683

然而,这会导致所有的NA值被返回。

1
你现在提出的问题无法阅读。请编辑格式并提供一个最小可行示例,以便我们能够帮助你。 - Joel
你想要实现什么还不清楚?你能用语言描述一下这个数学运算的作用吗?另外,你能发布一下期望的输出结果吗? - harvpan
想要计算 b^2 - a 吗? - Jan Sila
嘿,对于糟糕的格式我道歉,我是 Stack Exchange 的新手。我正在尝试将列 a 乘以 2 并减去列 b,并将其放入一个独立的数据框中。 - Victor
2个回答

7
如果需要使用 mulsub,请在一个列的 DataFrame 上最后使用 to_frame
df1 = df['a'].mul(2).sub(df['b']).to_frame('col')
#same as
#df1 = (df['a'] * 2 - df['b']).to_frame('col')
print (df1)
                col
6/29/2018  1.236544
6/30/2018  0.259022
7/1/2018   1.715813
7/2/2018   1.661975

对于Series

s = df['a'].mul(2).sub(df['b'])
print (s)
6/29/2018    1.236544
6/30/2018    0.259022
7/1/2018     1.715813
7/2/2018     1.661975
dtype: float64

感谢回复。当我输入这个时,我收到“DataFrame”对象没有属性“to_frame”的错误信息。也许这是由于我键入df1[['2043-08-31']].mul(2)而不是键入df.a引起的问题。 - Victor
只需要一个[],就像df1['2043-08-31'].mul(2) - jezrael
@Victor - 谢谢你,祝你愉快的一天! - jezrael

2

ind_df = df['col_a']的值乘以2,再减去df['col_b']的值。


1
不太建议,因为apply在底层是循环,所以速度较慢。 - jezrael

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接