这是我要分析的数据框的摘要。我想做的就是仅在X_LOT_NAME相同的情况下,才从D8_FLOW FORMATTED_ENTRY值中减去FP_FLOW FORMATTED_ENTRY值。例如,在X_LOT_NAME列中,您可以看到MPACZX2。 D8_FLOW FORMATTED_ENTRY为12.3%。 FP_FLOW FORMATTED_ENTRY值为7.8%。两者之间的差异为4.5%。我想将此逻辑应用于整个数据集
答案 0 :(得分:0)
这是您要寻找的吗?
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
答案 1 :(得分:0)
建议首先将数据转换为要添加/减去的值在同一行中的格式,然后再减去/添加相应的列。您可以使用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_FLOW
和FP_FLOW
,其中X_LOT_NAME
为索引。现在,您可以使用以下命令在新列中获取预期值:
pivot_data['DIFF'] = pivot_data['D8_FLOW'] - pivot_data['FP_FLOW']