【发布时间】:2019-12-04 13:48:23
【问题描述】:
我有一个如下所示的输入数据框
df = pd.DataFrame({'person_id' :[1,1,1,2,2,2,2,2,2],'level_1': ['L1FR','L1Date','L1value','L1FR','L1Date','L1value','L2FR','L2Date','L2value'], 'val3':['Fasting','11/4/2005',1.33,'Random','18/1/2007',4.63,'Fasting','18/1/2017',8.63]})
如下图所示
我想将我的输出转换为如下所示
这是我根据 SO 论坛的回复尝试的方法
g = df.level_1.str[-2:]
df.pivot_table(index='person_id', columns=g, values='val3',aggfunc='first')
这仅提供每个组(或人)的第一条记录,如下所示,非常接近我的预期输出。基本上我正在尝试进行某种转换/重新排列输入数据的显示方式
但我想拥有所有记录。在真实数据中,我有超过 10 万条记录,每个人都可以重复多次。
当我使用g.groupby(g).cumcount() 作为索引时,我得到了一半记录的 NA,我想避免它。我不知道为什么会出现这个问题。
解决此问题的任何其他方法也很有帮助。你能帮我得到这个输出吗?
【问题讨论】:
标签: python python-3.x pandas dataframe pivot-table