如何计算panda datafram中条件元素之间的变化

2024-09-21 00:18:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据框,在一个数据框中,每五分钟有30种证券的开盘价、高价、低价、收盘价。以下是一个示例:

                     Close   High    Low   Open Symbol
2015-03-18 14:05:00  75.99  75.99  75.73  75.76     DD
2015-03-18 14:05:00  82.82  82.85  82.55  82.55    WMT
2015-03-18 14:05:00  25.72  25.72  25.62  25.64     GE
2015-03-18 14:05:00  61.94  61.95  61.62  61.62    JPM
2015-03-18 14:10:00  26.72  26.72  26.62  26.64     GE
2015-03-18 14:10:00  62.94  62.95  62.62  62.62    JPM
2015-03-18 14:10:00  83.82  83.85  83.55  83.55    WMT
2015-03-18 14:10:00  73.99  73.99  73.73  73.76     DD

我想取每个符号在每个时间戳的打开值,然后从该符号在上一个时间戳的关闭值中减去它们来测量间隙。例如,我会取DD的14:10时间戳的打开值,然后从DD的14:05时间戳的关闭值中减去它

我已经找到了统一数据的解决方案,也就是说,如果这个数据帧只有一个符号,但是假设这个数据帧中有30个符号,那么计算这个“间隙”值的最佳方法是什么

谢谢你

希杰


Tags: 数据示例close时间符号dd证券间隙
1条回答
网友
1楼 · 发布于 2024-09-21 00:18:25

您可以^{}在'Symbol'上,然后调用^{}传递lambda并使用^{}

In [147]:
df.groupby('Symbol').apply(lambda x: x['Open'] - x['Close'].shift())

Out[147]:
index   2015-03-18 14:05:00  2015-03-18 14:10:00
Symbol                                          
DD                      NaN                -2.23
GE                      NaN                 0.92
JPM                     NaN                 0.68
WMT                     NaN                 0.73

编辑

要将此列添加为新列,您可以如上所述进行分组,并调用感兴趣的2列上的transform,并为“Close”列编制索引tranform返回与原始df对齐的序列:

In [19]:
df['New_col'] = df.groupby('Symbol')[['Open','Close']].transform(lambda x: x['Open'] - x['Close'].shift())['Close']
df

Out[19]:
                     Close   High    Low   Open Symbol  New_col
index                                                          
2015-03-18 14:05:00  75.99  75.99  75.73  75.76     DD    -2.23
2015-03-18 14:05:00  82.82  82.85  82.55  82.55    WMT     0.73
2015-03-18 14:05:00  25.72  25.72  25.62  25.64     GE     0.92
2015-03-18 14:05:00  61.94  61.95  61.62  61.62    JPM     0.68
2015-03-18 14:10:00  26.72  26.72  26.62  26.64     GE     0.92
2015-03-18 14:10:00  62.94  62.95  62.62  62.62    JPM     0.68
2015-03-18 14:10:00  83.82  83.85  83.55  83.55    WMT     0.73
2015-03-18 14:10:00  73.99  73.99  73.73  73.76     DD    -2.23

相关问题 更多 >

    热门问题