我正在尝试解析庞大数据集的一部分。我拥有的数据集部分是一个 3GB 的 gzip 文件。该文件的结构使其具有 x 列和数百万行。列用逗号或某种常用运算符分隔,以便我可以读取文件。
我想要做的是基于 2 个范围(即值 a < col1 < 值 b,值 c < col2 < 值 d),检查数据集每一行的两列值。如果两个值都在数据集的范围内,则将整行数据移动到一个新文件(?不确定将它存储在什么文件中),然后返回该新子集。
我缺少的是对如何处理这样的迭代的基本理解。在我使用 pandas read_csv 函数来过滤数据集后,我正在努力处理如何处理该集合。我想我应该使用数据框来访问我正在寻找的数据,但我不确定。
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句