无法比较/转换列表以浮动

时间:2019-05-22 15:34:30

标签: python

我有一个“雇员”列,其中包含以下数据:

showMap

我需要计算有多少个值符合特定条件(例如122.12 (Mark/Jen) 32.11 (John/Albert) 29.1 (Jo/Lian) )。

x>31

输出应该告诉我base = list() count = 0 count2 = 0 for element in data['Employees']: base.append(element.split(' ')[0]) if base > 31: count= count +1 else count2 = count2 +1 print(count) print(count2) 的值为2,而count的值为1。问题是我无法比较float与list。如何使count2起作用?

1 个答案:

答案 0 :(得分:0)

您有一个带有df列的Employees,需要将其拆分为数字和文本,保留数字并将其转换为浮点数,然后根据值对其进行过滤:

import pandas as pd

df = pd.DataFrame({'Employees': ["122.12 (Mark/Jen)", "32.11(John/Albert)", 
                                 "29.1(Jo/Lian)"]})
print(df)

# split at (
df["value"] = df["Employees"].str.split("(") 

# convert to float
df["value"] =  pd.to_numeric(df["value"].str[0])

print(df)

# filter it into 2 series
smaller = df["value"] < 31
remainder = df["value"] > 30

print(smaller) 
print(remainder)


# counts 
smaller31 = sum(smaller)   # True == 1 -> sum([True,False,False]) == 1
bigger30 = sum(remainder)

print(f"Smaller: {smaller31}      bigger30: {bigger30}")

输出:

# df
            Employees   
0   122.12 (Mark/Jen)   
1  32.11(John/Albert)   
2       29.1(Jo/Lian)   

# after split/to_numeric
            Employees   value
0   122.12 (Mark/Jen)  122.12
1  32.11(John/Albert)   32.11
2       29.1(Jo/Lian)   29.10

# smaller
0    False
1    False
2     True
Name: value, dtype: bool

# remainder
0     True
1     True
2    False
Name: value, dtype: bool

# counted
Smaller: 1      bigger30: 2