Python 我正在尝试查找值介于0-500、500-5000、5000-35000、35000-65000之间的所有行,>;60000

Python 我正在尝试查找值介于0-500、500-5000、5000-35000、35000-65000之间的所有行,>;60000,python,pandas,csv,dataframe,Python,Pandas,Csv,Dataframe,我的代码在中运行良好,它给了我一些值,但例如在我的csv中,我有一些介于35000-65000之间的值。不知何故,该列表的输出为零,这意味着我的代码无法看到这些值 我的值类型如下所示 import pandas as pd df = pd.read_csv('/Users/gfidarov/Desktop/daylite/export_daylite_v0.2.csv') #print(df) df1 = df[df['Итог'] >'60000'] a = len(df1) df5

我的代码在中运行良好,它给了我一些值,但例如在我的csv中,我有一些介于35000-65000之间的值。不知何故,该列表的输出为零,这意味着我的代码无法看到这些值

我的值类型如下所示

import pandas as pd

df = pd.read_csv('/Users/gfidarov/Desktop/daylite/export_daylite_v0.2.csv')
#print(df)
df1 = df[df['Итог'] >'60000']
a = len(df1)
df5 = df[df['Итог'].isin(['40565', '60000'])]
f = len(df5)
df2 = df[df['Итог'].isin(['5000', '35000'])]
b = len(df2)
df3 = df[df['Итог'].isin(['500', '5000'])]
c = len(df3)
df4 = df[df['Итог'].isin(['0', '500'])]
d = len(df4)
#print(df2)
print(a)    # >60000
print(b)    # 5000- 35000
print(c)    # 500 - 5000
print(d)    # 0 - 500
print(f)    # 35000 - 60000


这是我得到的输出。

你可以考虑使用<代码> Pd。

将numpy导入为np
作为pd进口熊猫
lst=[4430023400405031231245333,
12341, 64500, 3430, 13, 95844, 330, 2,
32, 78, 0]
df=pd.DataFrame({“a”:lst})
垃圾箱=[050050003500060000,np.infty]
df[“料仓”]=局部切割(df[“a”],料仓)
df.groupby(“箱子”).size()
箱子
(0.0, 500.0]          6
(500.0, 5000.0]       2
(5000.0, 35000.0]     3
(35000.0, 60000.0]    2
(60000.0,inf]2

读取cvs时,可以将列转换为int

330
2
32
78
0
然后,所有数学运算都将按预期进行

import pandas as pd

df = pd.read_csv('/Users/gfidarov/Desktop/daylite/export_daylite_v0.2.csv')
df = df[pd.to_numeric(df['Итог'], errors='coerce').notnull()]
输出[]

import pandas as pd

df = pd.read_csv('/Users/gfidarov/Desktop/daylite/export_daylite_v0.2.csv')
df = df[pd.to_numeric(df['Итог'], errors='coerce').notnull()]

df1 = df[df['Итог'] > 60000]
a = len(df1)
df2 = df[df['Итог'].between(40565, 60000)]
b = len(df2)
df3 = df[df['Итог'].between(5000, 35000)]
c = len(df3)
df4 = df[df['Итог'].between(500, 5000)]
d = len(df4)
df5 = df[df['Итог'].between(0, 500)]
f = len(df5)

print(a)
print(b)
print(c)
print(d)
print(f)
print(a+b+c+d+f)

我认为.isin函数在这种情况下是错误的,但我可以找到另一个可以读取所有值的函数,您需要将
df['ПцГ']
转换为整数
dtype
df['Пцц']=df['ПццГ'].astype(int)
。然后您需要使用并删除另一个字符串查看启用数据装箱的函数。好的,让我尝试这两种方法。
df['ПццГ']=df['ПццГ'].astype(int)
对于像
,,,
这样的行将失败。您想对这些行做什么?编辑:实际上,只需删除对
int
的转换,非常抱歉。只需在
之间交换
isin
。词典排序自然会避免issueValueError:int()的无效文本以10为基数:'-'导入熊猫作为pd df=pd.read_csv(“/Users/gfidarov/Desktop/daylite/export_daylite_v0.2.csv”,converters={“БааГ”:int()})df5=df[df['СааΓ'].介于(35000,60000)之间]打印(df5)我做的一切都很好,但仍然得到一个错误TypeError:“>=”在“str”和“int”的实例之间不受支持。你能删除那些不完全是数字的行吗
10:
?是的,我这样做了,你是对的。问题是在那些行中我删除了它们,现在可以了。非常感谢这一行可以工作,但不适用于csv(((问题是要将我的csv字符串列表转换为整数。您是否考虑过将其转换为浮点而不是int?是的,我考虑过,但仍然会遇到类似这样的错误TypeError:“>=”在“str”和“int”实例之间不受支持)
#print(df)
df1 = df[df['Итог'] > 60000]

df5 = df[df['Итог'].between(40565, 60000)]

df2 = df[df['Итог'].between(5000, 35000)]

df3 = df[df['Итог'].between(500, 5000)]

df4 = df[df['Итог'].between([0, 500)]
import pandas as pd

df = pd.read_csv('/Users/gfidarov/Desktop/daylite/export_daylite_v0.2.csv')
df = df[pd.to_numeric(df['Итог'], errors='coerce').notnull()]

df1 = df[df['Итог'] > 60000]
a = len(df1)
df2 = df[df['Итог'].between(40565, 60000)]
b = len(df2)
df3 = df[df['Итог'].between(5000, 35000)]
c = len(df3)
df4 = df[df['Итог'].between(500, 5000)]
d = len(df4)
df5 = df[df['Итог'].between(0, 500)]
f = len(df5)

print(a)
print(b)
print(c)
print(d)
print(f)
print(a+b+c+d+f)
22
15
585
570
326
1518