我有很多excel文件,都是用来做笔记本/一张纸的,但是模板是一样的。我试图从它们创建一个单一的dataframe。
许多单元格都有多个价格数值,我想提取这些数值并找到它们的平均值,不包括日历年(例如2019年)。
假设单元格中的文本为:59万美元是2019年的最低水平。USD 650 K是初始报价。但我从来不知道里面有多少个数值,可能是1,也可能是5。
我想要的是得到除年份之外的所有值的平均值。所以在这个例子中:(590+650)/2=620
这是我目前得到的:
s=df['Price'].str.findall('\d+')
df['Price1'] = s.apply(lambda x: '_'.join(i for i in x if int(i)<2000))
这给出以下输出:
590_650
然后得到一个平均值:
df['Price1'].str.split('_').apply(lambda x : (float(x[0])+float(x[1]))/2)
然而,问题是,我并不总是有2个值,它可以是1,它可以是5。所以我想一些通用的,可以随时应用。
任何帮助感激不尽。
1条答案
按热度按时间3pvhb19x1#
不带辅助列且带有
join
的解决方案:或者:
具有辅助列的解决方案: