Pandas中是否有方法减去同一列中具有相同名称的两个值?

2024-10-01 17:39:17 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是我试图分析的一个数据帧片段。我要做的是,仅当X_LOT_名称相同时,从D8_FLOW FORMATTED_条目值中减去FP_FLOW FORMATTED_条目值。例如,在X_LOT_NAME列中,您可以看到MPACZX2。D8_流格式的_条目为12.3%。FP_流格式化的_输入值为7.8%。两者之间的差异为4.5%。我想在整个数据集中应用这个逻辑

enter image description here


Tags: 数据name名称格式条目差异逻辑flow
2条回答

这就是你要找的吗

df.groupby(['x_lot'])['value'].diff()

0     NaN
1     NaN
2    -5.0
3     8.0
4    -3.0
5     NaN
6   -10.0
Name: value, dtype: float64

这是我用来得到上述结果的数据

    x_lot   type    value
0   mpaczw1 fp  21
1   mpaczw2 d8  12
2   mpaczw2 fp  7
3   mpaczw2 d8  15
4   mpaczw2 fp  12
5   mpaczw3 d8  21
6   mpaczw3 fp  11

建议首先将数据转换为一种格式,其中要添加/减去的值位于同一行中,然后再减去/添加相应的OCLUMN。您可以使用pd.pivot-table来实现这一点。下面的示例将使用与您共享的数据帧类似的示例数据帧来演示这一点:

wanted_data

    X_LOT_NAME  SPEC_TYPE   FORMATTED_ENTRY
0   a   FP_FLOW     1
1   a   D8_FLOW     2
2   c   FP_FLOW     3
3   c   D8_FLOW     4

pivot_data  = pd.pivot_table(wanted_data,values='FORMATTED_ENTRY',index='X_LOT_NAME',columns='SPEC_TYPE')
pivot_data
SPEC_TYPE   D8_FLOW     FP_FLOW
X_LOT_NAME      
a   2   1
c   4   3

在此步骤之后,结果pivot_data包含相同的数据,但列是D8_FLOWFP_FLOW,以X_LOT_NAME作为索引。现在,您可以使用以下方法在新列中获取预期值:

pivot_data['DIFF'] =  pivot_data['D8_FLOW'] - pivot_data['FP_FLOW'] 

相关问题 更多 >

    热门问题