如何获得一个区间的平均值?

2024-04-16 05:18:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有如下数据集:

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

我需要获得每个单元格的平均值,并用范围(浮点)替换它?你知道吗

所以,输出是

[2,5,10,13.5,17.5]

我所做的是:

begin = dt["size"].str.replace("mm", "").split("-")[0]

它抱怨一个错误

AttributeError: 'Series' object has no attribute 'split'

另外,我不确定这是否是最佳做法。你知道吗

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


Tags: 数据dataframedatasize错误dtreplace平均值
3条回答

.apply一起使用str.findall

例如:

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

dt["size_m"] = dt["size"].str.findall("(\d+)").apply(lambda x: sum(map(float, x))/len(x))
print(dt)

输出:

      size  size_m
0        2     2.0
1      5mm     5.0
2     10mm    10.0
3  12-15mm    13.5
4  16-19mm    17.5

我在这里不是很确定,因为我不是每天都使用python。但我想问题可能是str.replace("mm","")的返回,它似乎返回JSON,而不是Array。你知道吗

用途:

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

或使用:

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

输出:

0     2.0
1     5.0
2    10.0
3    13.5
4    17.5
dtype: float64

相关问题 更多 >