Pandas:如何在数据透视表数据框中仅添加最新日期
Posted
技术标签:
【中文标题】Pandas:如何在数据透视表数据框中仅添加最新日期【英文标题】:Pandas: How to extra only latest date in pivot table dataframe 【发布时间】:2018-01-17 16:03:07 【问题描述】:如何根据图片中的数据透视表创建一个新的数据框,该数据框仅包含每个“天”的“txn_date”列的最新日期作为索引? 谢谢
【问题讨论】:
【参考方案1】:d1 = pd.to_datetime(['2016-06-25'] *2 + ['2016-06-28']*4)
df = pd.DataFrame('txn_date':pd.date_range('2012-03-05 10:20:03', periods=6),
'B':[4,5,4,5,5,4],
'C':[7,8,9,4,2,3],
'D':[1,3,5,7,1,0],
'E':[5,3,6,9,2,4],
'day':d1).set_index(['day','txn_date'])
print (df)
B C D E
day txn_date
2016-06-25 2012-03-05 10:20:03 4 7 1 5
2012-03-06 10:20:03 5 8 3 3
2016-06-28 2012-03-07 10:20:03 4 9 5 6
2012-03-08 10:20:03 5 4 7 9
2012-03-09 10:20:03 5 2 1 2
2012-03-10 10:20:03 4 3 0 4
1.
如果需要,我认为您首先需要sort_index
,然后按级别day
和聚合last
groupby
:
df1 = df.sort_index().reset_index(level=1).groupby(level='day').last()
print (df1)
txn_date B C D E
day
2016-06-25 2012-03-06 10:20:03 5 8 3 3
2016-06-28 2012-03-10 10:20:03 4 3 0 4
2.
按boolean indexing
和duplicated
过滤:
#if necessary
df = df.sort_index()
df2 = df[~df.index.get_level_values('day').duplicated(keep='last')]
print(df2)
B C D E
day txn_date
2016-06-25 2012-03-06 10:20:03 5 8 3 3
2016-06-28 2012-03-10 10:20:03 4 3 0 4
【讨论】:
很高兴能帮上忙!还有一个对未来的小建议 - Don't post images of code (or links to them)。祝你好运!以上是关于Pandas:如何在数据透视表数据框中仅添加最新日期的主要内容,如果未能解决你的问题,请参考以下文章
如何在熊猫数据框中仅针对 dtype bool 列将 True 和 False 映射为“是”和“否”?