大型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 循环会更好。只是为了遵守约定,我改为打电话给你的FullDataFrame
df
:
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 Pandas 股票 Beta 计算
基于条件更改行值的 Python for 循环可以正常工作,但不会更改 pandas 数据帧上的值?
spark - 在大型数据帧上执行 groupby 和聚合时,java 堆内存不足