使用Pandas Dataframe ,我如何基于'CUSIP'(作为唯一ID)求出 Dataframe 之间'(x$1000)'和'PRN AMT'列的差异?我提供的数据集是一个示例,因此解决方案必须能够应对不同的顺序。我尝试阅读dataframe.subtract()文档,但不知道如何将其应用于我的特定问题。
Dataframe 1:
CUSIP (x$1000) PRN AMT TICKER
594918104 2765345852 2114080582 MSFT
037833100 1891440177 3058252946 AAPL
02079K305 1721936077 132543866 GOOGL
023135106 1341784239 2573051329 AMZN
Dataframe 2:
CUSIP (x$1000) PRN AMT TICKER
594918104 3034828140 1612323669 MSFT
037833100 2463247977 2628732382 AAPL
02079K305 2096049986 93429916 GOOGL
023135106 1581124222 118724459 AMZN
- 所需输出:*
CUSIP (x$1000) PRN AMT TICKER
594918104 -269482288 501756913 MSFT
037833100 -571807800 429520564 AAPL
02079K305 -374113909 39113950 GOOGL
023135106 -239339983 2454326870 AMZN
下面是重新创建 Dataframe 的代码:
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}')
1条答案
按热度按时间juzqafwq1#
用
CUSIP,TICKER
创建MultiIndex
,然后减去DataFrame.sub
,最后减去DataFrame.reset_index
,并按DataFrame.reindex
更改列的顺序: