无法将/变换列表与浮动进行比较

  • 本文关键字:比较 列表 变换 python
  • 更新时间 :
  • 英文 :


我有一个包含以下数据的列"员工":

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)

输出应该告诉我count值为2,而count2值为1。问题是我无法将float与列表进行比较。我该如何使if工作?

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

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

最新更新