熊猫:to_datetime元组标题 - 然后匹配最近

时间:2017-03-24 22:48:58

标签: python pandas tuples

我有一个CSV(类似于下面的那个),我正在尝试根据两个输入匹配一列,其中一个将完全匹配,另一个将是“最接近”,就像小于或等于。

DataFrame代码:

import pandas as pd
from StringIO import StringIO

# pseudo CSV data
x = StringIO('''
main,A,A,A,B,B,B
date,1/1/2016,3/1/2016,5/1/2016,1/1/2016,3/1/2016,5/1/2016
one,11,22,33,44,55,66
two,77,88,99,111,222,333
''')

df = pd.read_csv(x, header = [0,1], tupleize_cols = True)

输入将类似于:

my_main = 'B'
my_date = pd.to_datetime('2/1/2016')

我希望回归:

   (B, 1/1/2016)
0             44
1            111

这也可能是MultiIndex的工作 - 但我完全不熟悉这个功能。

我认为最初的步骤之一是转换元组标题to_datetime()的第二部分,但我也无法弄清楚如何做到这一点。

......显然df[('B','1/1/2016')]会起作用,但它是最接近的部分。

1 个答案:

答案 0 :(得分:2)

使用列表推导来查找正确的列。

date = pd.to_datetime('2/1/2016')
df[[c for c in df if c[0] == 'B' and pd.to_datetime(c[1]) <= date]]

   (B, 1/1/2016)
0             44
1            111