[英]Substract pandas Dataframes with different indices
我有兩個pandas
數據幀,我想減去它們。 基本 dataframe 被subtrahend
比其他 dataframe minuend
具有更多的索引和列。
它們定義如下:
minuend = pd.DataFrame(
{"angles": [0, 3, 4], "degrees": [360, 180, 360]},
index=["circle", "triangle", "rectangle"],
)
angles degrees
circle 0 360
triangle 3 180
rectangle 4 360
subtrahend = pd.Series(
[1, 1], index=["circle", "triangle"], name="angles"
).to_frame()
angles
circle 1
triangle 1
預期結果是:
angles degrees
circle -1 360
triangle 3 180
rectangle 3 360
由於 minuend minuend - subtrahend
subtrahend 或minuend.sub(subtrahend_df)
不能開箱即用,因此實現這一目標的最佳方法是什么?
我想出的一個解決方案是:
minuend.loc[subtrahend.index, subtrahend.columns] -= subtrahend
但我不確定這是否是解決它的最pythonic和最有效的方法。
你怎么看?
使用df.subtract
和df.fillna
:
In [1396]: minuend.subtract(subtrahend).fillna(minuend).astype(int)
Out[1396]:
angles degrees
circle -1 360
rectangle 4 360
triangle 2 180
一種使用pandas.DataFrame.update
方法:
minuend.update(minuend.sub(subtrahend))
Output:
angles degrees
circle -1.0 360
triangle 2.0 180
rectangle 4.0 360
在DataFrame.sub
中使用fill_value=0
參數:
df = minuend.sub(subtrahend, fill_value=0).astype(int)
print (df)
angles degrees
circle -1 360
rectangle 4 360
triangle 2 180
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.