簡體   English   中英

Pandas:如何從不同數據框中逐行減去值

[英]Pandas: How to subtract value from columns by rows from different dataframes

使用 Pandas 數據幀,如何減去基於“CUSIP”(充當唯一 ID)的數據幀之間列“(x$1000)”和“PRN AMT”中的差異? 我提供的數據集是一個示例,因此解決方案必須能夠應對不同的訂單。 我試過閱讀有關 dataframe.subtract() 的文檔,但不明白如何將其應用於我的具體問題。

數據框 1:

CUSIP       (x$1000)     PRN AMT   TICKER                            
594918104  2765345852  2114080582   MSFT
037833100  1891440177  3058252946   AAPL
02079K305  1721936077   132543866  GOOGL
023135106  1341784239  2573051329   AMZN

數據框 2:

CUSIP       (x$1000)     PRN AMT   TICKER  
594918104  3034828140  1612323669   MSFT
037833100  2463247977  2628732382   AAPL
02079K305  2096049986    93429916  GOOGL
023135106  1581124222   118724459   AMZN

通緝output:

CUSIP       (x$1000)     PRN AMT   TICKER  
594918104  -269482288  501756913   MSFT
037833100  -571807800  429520564   AAPL
02079K305  -374113909   39113950   GOOGL
023135106  -239339983  2454326870   AMZN

這是重新創建數據框的代碼:

import pandas as pd
dataset_1 = {'CUSIP': ['594918104', '037833100', '02079K305', '023135106'], '(x$1000)': [
    2765345852, 1891440177, 1721936077, 1341784239], 'PRN AMT': [2114080582, 3058252946, 132543866, 2573051329], 'TICKER': ['MSFT', 'AAPL', 'GOOGL', 'AMZN']}
dataset_2 = {'CUSIP': ['594918104', '037833100', '02079K305', '023135106'], '(x$1000)': [
    3034828140, 2463247977, 2096049986, 1581124222], 'PRN AMT': [1612323669, 2628732382, 93429916, 118724459], 'TICKER': ['MSFT', 'AAPL', 'GOOGL', 'AMZN']}
df_1 = pd.DataFrame(data=dataset_1)
df_2 = pd.DataFrame(data=dataset_2)
print(f'{df_1} and {df_2}')

通過CUSIP,TICKER創建MultiIndex並減去DataFrame.sub ,最后DataFrame.reset_index並通過DataFrame.reindex更改列的順序:

df = (df_1.set_index(['CUSIP','TICKER'])
          .sub(df_2.set_index(['CUSIP','TICKER']))
          .reset_index()
          .reindex(df_1.columns, axis=1))
print (df)

       CUSIP   (x$1000)     PRN AMT TICKER
0  594918104 -269482288   501756913   MSFT
1  037833100 -571807800   429520564   AAPL
2  02079K305 -374113909    39113950  GOOGL
3  023135106 -239339983  2454326870   AMZN

暫無
暫無

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

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