如何获得范围的平均值?

Jef*_*eff 2 python python-3.x

我有一个如下的数据集:

data = { "size":["2","5mm","10mm","12-15mm","16-19mm"] }
dt =pd.DataFrame(data=data)
Run Code Online (Sandbox Code Playgroud)

我需要获取每个单元格的平均值并将其替换为范围(以浮点数表示)吗?

因此,输出是

[2,5,10,13.5,17.5]
Run Code Online (Sandbox Code Playgroud)

我所做的是:

begin = dt["size"].str.replace("mm", "").split("-")[0]
Run Code Online (Sandbox Code Playgroud)

它抱怨有错误,

AttributeError: 'Series' object has no attribute 'split'
Run Code Online (Sandbox Code Playgroud)

另外,我不确定这是否是最佳做法。

获取此字符串范围平均值的最佳方法是什么?

U10*_*ard 5

使用:

print(dt['size'].str.rstrip('mm').str.split('-', expand=True).astype(float).mean(1))
Run Code Online (Sandbox Code Playgroud)

或使用:

print(dt['size'].str.rstrip('mm').apply(lambda x: sum(map(int, x.split('-'))) / len(x.split('-'))).astype(float))
Run Code Online (Sandbox Code Playgroud)

输出:

0     2.0
1     5.0
2    10.0
3    13.5
4    17.5
dtype: float64
Run Code Online (Sandbox Code Playgroud)