Python 2.7 大型python数据帧上的快速数据处理
我有一个巨大的数据框,包含4列900万行。例如,我的MainDataframe具有:Python 2.7 大型python数据帧上的快速数据处理,python-2.7,pandas,pattern-matching,dataframe,bigdata,Python 2.7,Pandas,Pattern Matching,Dataframe,Bigdata,我有一个巨大的数据框,包含4列900万行。例如,我的MainDataframe具有: NY_resitor1 NY_resitor2 SF_type SF_resitor2 45 36 Resis 40 47 36 curr 34 .
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_类型(即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")
这是我写的,在过去的一周里我一直在运行它,但它还没有完成。有没有更好更快的方法来实现这一点?使用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")
我不确定您的索引是什么,但如果您不只是使用默认的熊猫索引(即0、1、2、3等),那么您将通过对索引进行排序(
.sort\u index()
方法)看到性能提升。当我这样做时,我的两个帧是空的。我的df.SF_类型是object类型;因此,当我使用==时,它返回false,如果将它转换为等式语句的str
,会怎么样?比如resis=df[df.SF\u type.astype(str)='resis']