我试图在Python中的数据帧中找到给定列的平均值(如图所示)。其中一些有范围(即2-3和3-4),而另一些则没有(即1和4)。
dataframe中列的文本版本:
lst = ["1", "2-3", "3-4", "4"]
df = pd.DataFrame(lst)
df
1
2-3
3-4
4
我试着使用下面的函数,但是对于那些没有范围的函数,它不起作用。
# a function to split the range and take the mean
def split_mean(x):
# split before and after the hyphen (-)
split_num = x.split("-")
mean = (float(split_num[0])+float(split_num[1]))/2
return mean
编辑:必须替换空值,底部函数才能工作!
发布于 2020-05-22 20:31:23
像这样改变你的功能:
def split_mean(x):
# split before and after the hyphen (-)
split_num = x.split("-")
if len(split_num) == 2:
return (float(split_num[0])+float(split_num[1]))/2
else:
return float(x)
发布于 2020-05-22 21:07:52
如果您使用的是:
df[0].str.split('-').transform(lambda x: mean(map(int,x)))
您将得到输出:
0 1.0
1 2.5
2 3.5
3 4.0
Name: 0, dtype: float64
https://stackoverflow.com/questions/61963227
复制相似问题