以熊猫为单位从另一个数据帧中减去另一个数据帧

时间:2020-07-04 15:41:30

标签: python pandas dataframe

python熊猫中数据帧的元素明智减法

以下作品有效,但令我惊讶的是我需要使用numpy来完成 这个。

import pandas as pd
from io import StringIO

csv = '''\
pool,employee,xd1,xd2,xd1_bar,xd2_bar
1,a,-5.25,-3.92,-4.25,-3.42
1,b,-4.25,-3.92,-4.25,-3.42
1,c,-4.25,-2.92,-4.25,-3.42
1,d,-3.25,-2.92,-4.25,-3.42
2,e,-1.25,-0.92,-0.5,-0.16999999999999998
2,f,-1.25,1.08,-0.5,-0.16999999999999998
2,g,-0.25,0.08,-0.5,-0.16999999999999998
2,h,0.75,-0.92,-0.5,-0.16999999999999998
3,i,3.75,3.08,4.75,3.58
3,j,4.75,2.08,4.75,3.58
3,k,4.75,4.08,4.75,3.58
3,l,5.75,5.08,4.75,3.58
'''

data = pd.read_csv(StringIO(csv))

c1 = ["xd1", "xd2"]
c2 = ["xd1_bar", "xd2_bar"]

data_sub = data.join(
    pd.DataFrame(np.array(data[c1]) - np.array(data[c2]), columns=["x1_dev", "x2_dev"])
)

我希望以下方法能起作用:

data[c1].cub(data[c2]) 

1 个答案:

答案 0 :(得分:2)

您在这里所做的操作是正确的,因为pandas和{因为dataframe和{ {1}}用于c1和c2

请固定输出,添加column,因为新的dataframe,index将是range索引,但是您原来的可能不是,您可能不想在加入后丢失信息

index