Pandas dataframe ..逐行重新采样

时间:2017-04-26 08:09:56

标签: python pandas

我有一些日内股票数据(例如,DateTime,Open,Close),我希望通过当天的汇总方式进行扩展。 喜欢: 日期时间,打开,关闭,t_Open(开放日期),t_Close(日期结束)。

当我使用resample()时,它会重新采样一整天:

            var table = ctx.workbook.tables.getItem('TableName');

            if (Office.context.requirements.isSetSupported('ExcelApi', 1.2) === true) {
                table.clearFilters();
            }

            var tableRows = table.rows.load('items');

            ctx.sync().then(function () {
                for (var i = (tableRows.count - 1); i >= 0; i -= 1) {
                    var row = tableRows.getItemAt(tableRows.items[i].index);
                    row.delete();
                }
            });

但我正在寻找一些按行重新取样的东西。 因此,对于每一行,close都等于t_close,因为它是givin点的最后一个obs(并且t_High将是该行的最高UNTIL)。

像这样:

               DateTime     Open    Close   T_OPEN  T_CLOSE
165 2017-04-26 08:00:00  12485.6  12473.6  12485.6  12463.4
166 2017-04-26 08:15:00  12473.9  12473.9  12485.6  12463.4
167 2017-04-26 08:30:00  12473.6  12466.1  12485.6  12463.4
168 2017-04-26 08:45:00  12466.4  12469.6  12485.6  12463.4
169 2017-04-26 09:00:00  12470.1  12460.4  12485.6  12463.4
170 2017-04-26 09:15:00  12460.1  12460.1  12485.6  12463.4
171 2017-04-26 09:30:00  12459.9  12459.6  12485.6  12463.4
172 2017-04-26 09:45:00  12459.4  12463.4  12485.6  12463.4
173 2017-04-26 10:00:00  12462.9  12463.4  12485.6  12463.4

你有什么想法吗?

更新 评论结束后,我决定创建一个更通用的问题:) 我需要根据所有数据计算其他列,直到我正在处理的行。这意味着:

               DateTime     Open    Close   T_OPEN  T_CLOSE
165 2017-04-26 08:00:00  12485.6  12473.6  12485.6  12473.6
166 2017-04-26 08:15:00  12473.9  12473.9  12485.6  12473.9
167 2017-04-26 08:30:00  12473.6  12466.1  12485.6  12466.1
168 2017-04-26 08:45:00  12466.4  12469.6  12485.6  12469.6

我可以通过在该数据帧上迭代两次来解决这个问题...但我正在寻找/希望有更多类似熊猫的选项:)

谢谢,并祝福, 即

2 个答案:

答案 0 :(得分:0)

我想我知道你要做什么。这应该有效:

df = df.loc[df['Open'] <= df['Close']]
df['T_CLOSE'] = df['Close']

答案 1 :(得分:0)

我通过迭代和保留更高/更低值的值来解决问题

谢谢! Elenio