大型python数据帧上的快速数据处理

Posted

技术标签:

【中文标题】大型python数据帧上的快速数据处理【英文标题】:Fast data processing on large python dataframe 【发布时间】:2015-10-20 15:31:54 【问题描述】:

我有一个包含 4 列和 900 万行的巨大数据框。例如我的 MainDataframe 有:

NY_resitor1 NY_resitor2    SF_type        SF_resitor2 
     45           36          Resis          40                  
     47           36          curr           34                    
      .            .           .              .                   
     49           39          curr           39 
     45           11          curr           12 
     12           20          Resis          45

我想要两个数据框,并将它们保存为基于 SF_type 即 Resis 和 curr 的 csv 文件。 这是我写的

 FullDataframe=pd.read_csv("hdhhdhd.csv")
 resis=pd.DataFrame()
 curr=pd.DataFrame()  

 for i in range(len(FullDataframe["SF_type"].values)):
     if Resis in FullDataframe["SF_type"].values[i]:
          resis.loc[i]=FullDataframe[["NY_resitor1", "NY_resitor2",  "SF_type","SF_resitor2"]].values[i]

     elif curr in  in FullDataframe["SF_type"].values[i]:
          curr.loc[i]=FullDataframe[["NY_resitor1", "NY_resitor2",  "SF_type","SF_resitor2"]].values[i]

 resis.to_csv("jjsjjjsjs.csv")
 curr.to_csv("jjsj554js.csv")

这是我写的,过去一周我一直在运行它,但它还没有完成。有没有更好更快的方法来做到这一点?

【问题讨论】:

【参考方案1】:

使用 pandas 过滤器而不是 for 循环会更好。只是为了遵守约定,我改为打电话给你的FullDataFramedf

resis = df[df.SF_type == 'Resis']
curr = df[df.SF_type == 'curr']

然后运行你的:

resis.to_csv("jjsjjjsjs.csv")
curr.to_csv("jjsj554js.csv")

我不确定您的索引是什么,但如果您不只使用默认的 pandas 索引(即 0、1、2、3 等),那么通过对索引进行排序(@ 987654325@方法)。

【讨论】:

当我这样做时,我的两个框架都是空的。我的 df.SF_type 是对象类型;所以当我使用 == 它返回 false 如果将其转换为str 以获取相等性声明会怎样?喜欢resis = df[df.SF_type.astype(str) == 'Resis']

以上是关于大型python数据帧上的快速数据处理的主要内容,如果未能解决你的问题,请参考以下文章

python数据帧上的平均值和最大值

许多数据帧上的高效 Python Pandas 股票 Beta 计算

基于条件更改行值的 Python for 循环可以正常工作,但不会更改 pandas 数据帧上的值?

spark - 在大型数据帧上执行 groupby 和聚合时,java 堆内存不足

有没有办法使用 pgeocode 加快在大型数据帧上查询邮政编码的经纬度?

pyspark 数据帧上的向量操作