python - pandas cumsum 工作不正确
问题描述
我有数据框:
data = {'process': ['buying','selling','searhicng','repairing', 'preparing', 'selling','buying', 'searching', 'selling','searching'],
'type': ['in_progress','in_progress','end','in_progress', 'end', 'in_progress','in_progress', 'end', 'in_progress','end'],
'country': ['usa','usa', 'usa','ghana', 'ghana','ghana','ghana', 'ghana', 'albania','albania'],
'id': ['022','022','022', '011','011', '011','011', '011', '6','6'],
'created': ['2021-07-01','2021-07-02','2021-07-03','2021-07-04','2021-07-05','2021-07-06','2021-07-07','2021-07-08','2021-07-09','2021-07-10']
}
df = pd.DataFrame(data, columns = ['process','type','country', 'id','created'])
我需要在应用函数中使用 cumsum 。使用后df.groupby('country').apply(lambda x:(x['type']!=x['type'].shift()).cumsum()).reset_index()
我得到这样的数据框
但是我需要获取另一个数据框,任何人都可以看到问题吗?Pandas 版本 '0.25.3' 输出结果:
解决方案
IIUC 用途:
df['new'] = df.groupby('country')['type'].apply(lambda x:(x!=x.shift()).cumsum())
print (df)
process type country id created new
0 buying in_progress usa 022 2021-07-01 1
1 selling in_progress usa 022 2021-07-02 1
2 searhicng end usa 022 2021-07-03 2
3 repairing in_progress ghana 011 2021-07-04 1
4 preparing end ghana 011 2021-07-05 2
5 selling in_progress ghana 011 2021-07-06 3
6 buying in_progress ghana 011 2021-07-07 3
7 searching end ghana 011 2021-07-08 4
8 selling in_progress albania 6 2021-07-09 1
9 searching end albania 6 2021-07-10 2
推荐阅读
- ssl - 2路ssl与Nginx
- gradle - Vaadin 12,Tomcat:找不到基本名称的捆绑包
- nopcommerce - Nopcommerce 支付方式友好名称在构建解决方案后恢复为默认值
- laravel - 无法在多态关系上获得正确的 Eloquent 关联
- java - 由于 Lambok 注释类,Maven 构建失败
- c# - 如何根据 Excel 搜索结果填充 DataGridView 并从 DataGridView 中删除空白标题?
- reactjs - autoHideDuration 在 Snackbar @material-ui 中不起作用
- matlab - 从多个文本文件导入数据
- python-3.x - 有没有更好的方法同时解析两个列表?
- r - R传单包没有正确显示特殊字符?