我正在尝试解析巨大数据集的一部分。我拥有的数据集部分是一个3GB的gzip文件。该文件的结构使其具有x列和数百万行。这些列用逗号或某种常见的运算符分隔,因此我可以读取文件。
我要基于2个范围(即值a 我所缺少的是如何处理这样的迭代的基本理解。在使用pandas read_csv函数过滤数据集后,我正在努力处理集合。我认为我应该使用数据帧来访问所需的数据,但不确定。
答案 0 :(得分:1)
IIUC,创建一个最小的可重复示例:
from io import StringIO
data = StringIO("""X, a, 1, 15
Y, a, 12, 44
Z, a, 13, 39
W, a, 11, 47""")
df=pd.read_csv(data,header=None)
df.columns=['A','B','C','D']
print(df)
A B C D
0 X a 1 15
1 Y a 12 44
2 Z a 13 39
3 W a 11 47
现在使用series.between()
和df.loc[]
的过滤器:
cond1 = df['C'].between(10,15) #check if C betwen 10,15
cond2 = df['D'].between(40,50) #check if D between 40 and 50
df_new=df.loc[cond1&cond2] #pull data where both condition matches and place in new_df
print(df_new)
A B C D
1 Y a 12 44
3 W a 11 47
如果愿意使用sql查询(仅用于实验):):
import pandasql as ps
ps.sqldf('select * from df where df.C between 10 and 15 and df.D between 40 and 50')
A B C D
0 Y a 12 44
1 W a 11 47
答案 1 :(得分:1)
使用DataFrame.query
进行过滤的解决方案:
#anky_91 dataset
df1 = df.query('10 < C < 15 & 40 < D < 50 ')
print (df1)
A B C D
1 Y a 12 44
3 W a 11 47