Python 带字符串的列的平均值、最小值、最大值(以熊猫为单位)
我有一个这样的专栏Python 带字符串的列的平均值、最小值、最大值(以熊猫为单位),python,pandas,Python,Pandas,我有一个这样的专栏 User time Column User1 time1 44 db User1 time2 55 db User1 time3 43 db User1 time4 no_available 如何计算平均值、最小值、最大值,只需取44 55 43(无db),忽略每个用户的“无可用”和“无功率”等值 另外,如果用户10次拥有10个值,那么如何获取当天的最后一个值 问候, 谢谢。该列有最大值和最小值。 给我一个大概的数字D 将熊猫作为pd导入 a=[“user
User time Column
User1 time1 44 db
User1 time2 55 db
User1 time3 43 db
User1 time4 no_available
如何计算平均值、最小值、最大值,只需取44 55 43(无db),忽略每个用户的“无可用”和“无功率”等值
另外,如果用户10次拥有10个值,那么如何获取当天的最后一个值
问候,
谢谢。该列有最大值和最小值。 给我一个大概的数字D
将熊猫作为pd导入
a=[“user1”、“user1”、“user1”、“user1”]
a2=[“时间1”、“时间2”、“时间3”、“时间4”]
a3=['45分贝','55分贝','43分贝','no_available']
a=pd.DataFrame(a,列=[“用户”])
a2=pd.DataFrame(a2,列=[“时间”])
a3=pd.DataFrame(a3,列=[“列”])
数据=pd.concat([a,a2,a3],轴=1)
数据1=列表(数据[“列”])
h=[]
对于data1中的i:
尝试:
如果int(i[0:2]):
h、 追加(int(i[0:2]))
除:
印刷品(一)
最大(小时)
min(h)
如果所有整数都是整数,则可以使用str.extract()
提取数字。然后,返回平均值、最大值等:
df = pd.DataFrame({'User': {0: 'User1', 1: 'User1', 2: 'User1', 3: 'User1'},
'time': {0: 'time1', 1: 'time2', 2: 'time3', 3: 'time4'},
'Column': {0: '44 db', 1: '55 db', 2: '43 db', 3: 'no_available'}})
df['Numbers'] = df['Column'].str.extract('(\d+)').astype(float)
print(df['Numbers'].mean(), df['Numbers'].max())
Out [1]:
47.333333333333336 55.0
编号为
-
,
或,
的示例:
import pandas as pd
df = pd.DataFrame({'User': {0: 'User1', 1: 'User1', 2: 'User1', 3: 'User1'},
'time': {0: 'time1', 1: 'time2', 2: 'time3', 3: 'time4'},
'Column': {0: '44 db', 1: '-45.32 db', 2: '4,452.03 db', 3: 'no_available'}})
df['Numbers'] = df['Column'].str.replace(',','').str.extract('(-?\d+.?\d+)').astype(float)
print(df['Numbers'])
0 44.00
1 -45.32
2 4452.03
3 NaN
Name: Numbers, dtype: float64
有具体问题吗?请看,。你好,谢谢。。。。。它是有效的,但并非所有情况下都有效,我有一些负值,也有42.03 db或-45.32 dbseem的值,与str.extract(“(?\d+。?\d+”)一起工作,是正确的?@mbooma我已经更新了我的答案。你也应该找一个逗号以防万一。我已经包括了
.str.replace(',','')
。这种替换可能比带逗号的正则表达式模式更容易。请单击“我的解决方案”旁边的复选标记接受答案,如果有帮助,请向上投票。谢谢