所以,我有一个带有多索引的 DataFrame,如下所示:
info1 info2 info3
abc-8182 2012-05-08 10:00:00 1 6.0 "yeah!"
2012-05-08 10:01:00 2 25.0 ":("
pli-9230 2012-05-08 11:00:00 1 30.0 "see yah!"
2012-05-08 11:15:00 1 30.0 "see yah!"
...
索引是一个 id 和一个日期时间,表示何时记录有关该 id 的信息。我们需要做的是为每个 id 找到最早的记录。我们从 dataframe 方法中尝试了很多选项,但最终我们通过循环遍历 DataFrame 来做到这一点:
df = pandas.read_csv(...)
empty = pandas.DataFrame()
ids = df.index.get_level_values(0)
for id in ids:
minDate = df.xs(id).index.min()
row = df.xs(id).xs(minDate)
mindf = pandas.DataFrame(row).transpose()
mindf.index = pandas.MultiIndex.from_tuples([(id, mindate)])
empty = empty.append(mindf)
print empty.groupby(lambda x : x).first()
这给了我:
x0 x1 x2
('abc-8182', <Timestamp: 2012-05-08 10:00:00>) 1 6 yeah!
('pli-9230', <Timestamp: 2012-05-08 11:00:00>) 1 30 see yah!
我觉得必须有一个简单的、“熊猫惯用的”、非常直接的方法来做到这一点,而无需像这样循环数据框。有没有?:)
谢谢。