如何在 pandas 数据框中捕获连字符分隔数字的平均值?

How to capture mean of hyphen seperated numbers in a pandas dataframe?

我有一个PandasDataFrame年龄段的吸毒者。我的问题:某些年龄段由连字符分隔,例如 '50-64'。我想获取连字符分隔数字的平均值并用它替换单元格。

1.Is 有没有办法用某种循环或方法来做到这一点?我不想简单地硬编码 drugs.loc[10,'age'] = np.mean(55+64)

2.For 未来的参考,有没有更优雅的方式来处理用连字符分隔的数字的数据?

input:
drugs.age
output:
0        12
1        13
2        14
3        15
4        16
5        17
6        18
7        19
8        20
9        21
10    22-23
11    24-25
12    26-29
13    30-34
14    35-49
15    50-64
16      65+

input:
drugs.age.dtype
output:
dtype('O')

您可以使用:


drugs['age'] = drugs['age'].str.replace('+','')
                           .str.split('-', expand=True)
                           .astype(float)
                           .mean(axis=1)
print (drugs)
     age
0   12.0
1   13.0
2   14.0
3   15.0
4   16.0
5   17.0
6   18.0
7   19.0
8   20.0
9   21.0
10  22.5
11  24.5
12  27.5
13  32.0
14  42.0
15  57.0
16  65.0

如果某些值是数字并且需要某些字符串,请先将所有值转换为字符串:

drugs['age'] = drugs['age'].astype(str)
                           .str.replace('+','')
                           .str.split('-', expand=True)
                           .astype(float)
                           .mean(axis=1)