如果特定 ID 在缺少的列中没有"前"或"后"期间的行,则添加行

  • 本文关键字:添加行 ID 如果 python pandas
  • 更新时间 :
  • 英文 :


我有一个数据框架,它是一个人在前期和后期在服务上花费的净额,这是给我的。我们希望做一个分析,比较这些成员在前期和后期是否有不同的消费和访问量。

数据框看起来是这样的,但这个问题在整个数据中出现在几个地方,有时它是"前置"成员缺少的句号,有时是"post"。时期。

df=pd.DataFrame({'unique_member_id_key':[723543, 723543, 723548, 723548, 723550, 723552, 723552],'net_amount':[34.26,35.09,72.07,54.73,54.32,87.43,87.32],'total_visits':[4,2,8,1,3,5,4],'Period':["Pre","Post","Pre","Post","Pre","Pre","Post"]})

我想做的是在python中修复这个问题,这样pandas数据框架将填充缺失的"前置"或";Post"句点与为"total_visitors"添加零的成员的新行对应。和";net_amount"列,并添加"前置"或";Post"值(取决于是否缺少用于"前"的行)。句点值或"post";期值).

有没有一种方法可以系统地做到这一点,而不必找到每个缺少"前置"或";Post"周期和插入行单独为每次发生这种情况?

谢谢! !马克。

IIUC,您可以使用pivot_table获得密集矩阵,然后使用stack获得原始数据帧:

>>> (df.pivot_table(index='unique_member_id_key', columns='Period', 
values=['net_amount', 'total_visits'], fill_value=0)
.stack().reset_index())
unique_member_id_key Period  net_amount  total_visits
0                723543   Post       35.09             2
1                723543    Pre       34.26             4
2                723548   Post       54.73             1
3                723548    Pre       72.07             8
4                723550   Post        0.00             0  # <- HERE
5                723550    Pre       54.32             3
6                723552   Post       87.32             4
7                723552    Pre       87.43             5

或者@mozway用set_index/unstack然后stack/reset_index建议:

>>> (df.set_index(['unique_member_id_key', 'Period'])
.unstack(fill_value=0)
.stack().reset_index())
unique_member_id_key Period  net_amount  total_visits
0                723543   Post       35.09             2
1                723543    Pre       34.26             4
2                723548   Post       54.73             1
3                723548    Pre       72.07             8
4                723550   Post        0.00             0  # <- HERE
5                723550    Pre       54.32             3
6                723552   Post       87.32             4
7                723552    Pre       87.43             5

相关内容

  • 没有找到相关文章

最新更新