如何根据模式删除列中每个条目的最后部分?
How to remove the last part of each entry in a column based on a pattern?
我在 pandas 数据框中编译了一组油井。它看起来像这样:
wells = pd.DataFrame({'date':['2019-01-01', '2019-01-01','2019-01-01', '2019-01-01','2019-01-01', '2019-01-01'],
'well': ['FIELDX-1D', 'FIELDX-2D', 'FIELDY-1C', 'FIELDY-1B', 'FIELDZ-1A', 'FIELDZ-1J'],
'oil_mmbd':[3.1, 5.6, 9.8, 2.5, 4.7, 6.1]})
date well oil_mmbd
0 2019-01-01 FIELDX-1D 3.1
1 2019-01-01 FIELDX-2D 5.6
2 2019-01-01 FIELDY-1C 9.8
3 2019-01-01 FIELDY-1B 2.5
4 2019-01-01 FIELDZ-1A 4.7
5 2019-01-01 FIELDZ-1J 6.1
我想要实现的是创建一个新变量(即 'Field')来编译每个字段的聚合输出。为此,我需要去掉每口井名称的最后一部分;但我似乎无法使用 Python 和 Pandas.
找到解决方案
我想去 table 看起来像这样:
wells_agg = pd.DataFrame({'date':['2019-01-01', '2019-01-01','2019-01-01'],
'field': ['FIELDX', 'FIELDY', 'FIELDZ'],
'oil_mmbd':[8.7, 12.3, 10.8]})
date field oil_mmbd
0 2019-01-01 FIELDX 8.7
1 2019-01-01 FIELDY 12.3
2 2019-01-01 FIELDZ 10.8
您可以使用 wells.well.str.split('-').str[0])
去除孔列的后缀。因此,使用 wells.groupby(wells.well.str.split('-').str[0]))
而不是 wells.groupby('well')
。考虑到这一点,请参阅下面的解决方案。
wells.groupby(['date',wells.well.str.split('-')\
.str[0]]).oil_mmbd.sum().reset_index()
date well oil_mmbd
0 2019-01-01 FIELDX 8.7
1 2019-01-01 FIELDY 12.3
2 2019-01-01 FIELDZ 10.8
我在 pandas 数据框中编译了一组油井。它看起来像这样:
wells = pd.DataFrame({'date':['2019-01-01', '2019-01-01','2019-01-01', '2019-01-01','2019-01-01', '2019-01-01'],
'well': ['FIELDX-1D', 'FIELDX-2D', 'FIELDY-1C', 'FIELDY-1B', 'FIELDZ-1A', 'FIELDZ-1J'],
'oil_mmbd':[3.1, 5.6, 9.8, 2.5, 4.7, 6.1]})
date well oil_mmbd
0 2019-01-01 FIELDX-1D 3.1
1 2019-01-01 FIELDX-2D 5.6
2 2019-01-01 FIELDY-1C 9.8
3 2019-01-01 FIELDY-1B 2.5
4 2019-01-01 FIELDZ-1A 4.7
5 2019-01-01 FIELDZ-1J 6.1
我想要实现的是创建一个新变量(即 'Field')来编译每个字段的聚合输出。为此,我需要去掉每口井名称的最后一部分;但我似乎无法使用 Python 和 Pandas.
找到解决方案我想去 table 看起来像这样:
wells_agg = pd.DataFrame({'date':['2019-01-01', '2019-01-01','2019-01-01'],
'field': ['FIELDX', 'FIELDY', 'FIELDZ'],
'oil_mmbd':[8.7, 12.3, 10.8]})
date field oil_mmbd
0 2019-01-01 FIELDX 8.7
1 2019-01-01 FIELDY 12.3
2 2019-01-01 FIELDZ 10.8
您可以使用 wells.well.str.split('-').str[0])
去除孔列的后缀。因此,使用 wells.groupby(wells.well.str.split('-').str[0]))
而不是 wells.groupby('well')
。考虑到这一点,请参阅下面的解决方案。
wells.groupby(['date',wells.well.str.split('-')\
.str[0]]).oil_mmbd.sum().reset_index()
date well oil_mmbd
0 2019-01-01 FIELDX 8.7
1 2019-01-01 FIELDY 12.3
2 2019-01-01 FIELDZ 10.8