我有一个如下的数据集:
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)
另外,我不确定这是否是最佳做法。
获取此字符串范围平均值的最佳方法是什么?
使用:
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)