簡體   English   中英

Pandas 中有沒有辦法減去同一列中同名的兩個值?

[英]Is there a way in Pandas to subtract two values that are in the same column that have the same name?

這是我正在嘗試分析的 dataframe 的片段。 我要做的只是僅當 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%。 我想在整個數據集中應用這個邏輯

在此處輸入圖像描述

這是你想要的?

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

建議首先將您的數據轉換為要添加/減去的值在同一行中的格式,然后減去/添加相應的 oclumns。 您可以使用pd.pivot-table執行此操作。 下面的示例將使用與您共享的示例 dataframe 類似的示例演示這一點:

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'] 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM