【发布时间】:2020-07-27 11:14:51
【问题描述】:
全部,
我有以下长格式数据框:
df = pd.DataFrame({'date': ["2020-01-01","2020-01-01","2020-01-02","2020-01-02","2020-01-01","2020-01-01","2020-01-02","2020-01-02"], 'asset': ["x", "x","x", "x","y","y","y","y"], 'type': ["price", "spread","price","spread","price", "spread","price","spread"], 'value': ["1.5", "0.01","1.6", "0.01","1","0.08","1.2","0.09"]})
看起来像这样:
date asset type value
0 2020-01-01 x price 1.5
1 2020-01-01 x spread 0.01
2 2020-01-02 x price 1.6
3 2020-01-02 x spread 0.01
4 2020-01-01 y price 1
5 2020-01-01 y spread 0.08
6 2020-01-02 y price 1.2
7 2020-01-02 y spread 0.09
我想从x 的价格中减去y 的价格并保持相同的数据结构,结果应该如下所示:
date asset type value
0 2020-01-01 x price 1.5
1 2020-01-01 x spread 0.01
2 2020-01-02 x price 1.6
3 2020-01-02 x spread 0.01
4 2020-01-01 y price 1
5 2020-01-01 y spread 0.08
6 2020-01-02 y price 1.2
7 2020-01-02 y spread 0.09
8 2020-01-01 x_min_y pricediff 0.5
9 2020-01-02 x_min_y pricediff 0.4
我想使用 pandas 的 assign() 函数来创建它,但我不知道该怎么做。
提前致谢!
【问题讨论】:
-
pd.assign() 用于向数据框添加新列,它不能帮助您向数据框添加新行。您需要创建由这 2 行组成的数据框分隔,然后使用 pd.concat() 组装两者
-
@Deepak 您可以使用 assign 然后使用 melt() 来维护您的长数据帧结构。但是如何使用 assign() 并选择 x 和 y 的价格并减去呢?
标签: python pandas dataframe subtraction