根据另一个数据框的组范围来解释数据框列的范围

时间:2018-10-17 22:43:38

标签: python python-2.7 pandas dataframe

最近我在使用R遇到类似问题时获得了帮助,现在我想在python 2.7中使用pandas做到这一点。我已经在这里回顾了几个类似的问题,但是可惜仍然有问题。

我有两个数据框:

import pandas as pd

dfa = pd.DataFrame([["1", "1", "2", "A"], ["2", "1", "2", "A"], ["3", "3", 
    "4", "B"], ["4", "3", "4", "B"], ["5", "5", "6", "C"], ["6", "5", "6", 
    "C"], ["7", "7", "8", "D"], ["8", "7", "8", "D"]], columns=['TimeStamp', 
    'Min', 'Max', 'Group'])
dfb = pd.DataFrame([['1'], ['2'], ['3'], ['4'], ['5'], ['6'], ['7'], ['8']], 
    columns = ['TimeStamp'])

enter image description here

我正在寻找一种基于dfa中每个组的最大最小值之内的时间戳在dfb中创建组ID的方法。因此,dfb_final:

enter image description here

这是针对较大的数据集,我已简化了示例。我只是不太确定下一步该怎么做。根据其他答案,我得到了dfa中的最大最小值列。非常感谢向大家学习。

1 个答案:

答案 0 :(得分:0)

您可以使用np.searchsorted。以下解决方案假定各组的responseMethod: function (res, promise) { return promise .then(data => { res.status(200).send({ status: 200, data: data }) }) .catch(error => { res.status(500).send({ status: 500, statusText: error.message }) }) }, method1: function (req, res) { responseMethod(res, db.getData(req)) }, method2: function (req, res) { responseMethod(res, db.getData2(req)) }, / Min值中没有没有重叠。首先将一些系列转换为数字,以便可以通过NumPy使用它们:

Max

注意dfa[dfa.columns[:-1]] = dfa[dfa.columns[:-1]].apply(pd.to_numeric) dfb['TimeStamp'] = pd.to_numeric(dfb['TimeStamp']) /时间戳值 如有必要,可以转换为数值等效项。

然后提取唯一的组和datetime / Min值的展平版本:

Max

最后,使用groups = dfa['Group'].unique() vals = dfa.drop_duplicates('Group').loc[:, ['Min', 'Max']].values.ravel() 将时间戳记放置在np.searchsorted中,并使用结果索引vals

groups