Python 跨多列写入数据帧的更快方法?
我有两个数据帧,其中df中的数据被重写到另一行中的dh(x和p之间的关系是任意的)。两个帧中的每一行都具有相同的浮动数据类型,作为变量A B C D E F水平排列。我最初是通过以下方式实现的:Python 跨多列写入数据帧的更快方法?,python,pandas,Python,Pandas,我有两个数据帧,其中df中的数据被重写到另一行中的dh(x和p之间的关系是任意的)。两个帧中的每一行都具有相同的浮动数据类型,作为变量A B C D E F水平排列。我最初是通过以下方式实现的: dh.iloc[p,A] = df.iloc[x,A] dh.iloc[p,B] = df.iloc[x,B] dh.iloc[p,C] = df.iloc[x,C] dh.iloc[p,D] = df.iloc[x,D] dh.iloc[p,E] = df.iloc[x,E] dh.iloc[p,F]
dh.iloc[p,A] = df.iloc[x,A]
dh.iloc[p,B] = df.iloc[x,B]
dh.iloc[p,C] = df.iloc[x,C]
dh.iloc[p,D] = df.iloc[x,D]
dh.iloc[p,E] = df.iloc[x,E]
dh.iloc[p,F] = df.iloc[x,F]
我突然想到,这是对6个离散位置的6个离散访问,如果我能同时写入所有6个,可能会更快。有没有任何方法可以在一条语句中执行得更快
import pandas as pd
import DataFrame as df
x=0
p=0
GDZ=0
while x < 1000:
if GDZ == 0:
ZroTst = df.iloc[x, Zerstng]
if ZroTst == 'ZZ':
GDZ = 1
x +=1
else:
x +=1
else:
ZroTst = df.iloc[x,Zerstng]
if ZroTst == 'BB':
GDZ = 0
x +=1
else:
p +=1
dh.iloc[p,A] = df.iloc[x,A]
dh.iloc[p,B] = df.iloc[x,B]
dh.iloc[p,C] = df.iloc[x,C]
dh.iloc[p,D] = df.iloc[x,D]
dh.iloc[p,E] = df.iloc[x,E]
dh.iloc[p,F] = df.iloc[x,F]
x +=1
x +=1
将熊猫作为pd导入
将数据帧导入为df
x=0
p=0
GDZ=0
当x<1000时:
如果GDZ==0:
ZroTst=df.iloc[x,Zerstng]
如果ZroTst==“ZZ”:
GDZ=1
x+=1
其他:
x+=1
其他:
ZroTst=df.iloc[x,Zerstng]
如果ZroTst=='BB':
GDZ=0
x+=1
其他:
p+=1
dh.iloc[p,A]=df.iloc[x,A]
dh.iloc[p,B]=df.iloc[x,B]
dh.iloc[p,C]=df.iloc[x,C]
dh.iloc[p,D]=df.iloc[x,D]
dh.iloc[p,E]=df.iloc[x,E]
dh.iloc[p,F]=df.iloc[x,F]
x+=1
x+=1
dh.iloc[p[A,B,C,D,E,F]=df.iloc[x[A,B,C,D,E,F]
p
和x
是一行。在大熊猫中,对一排做一些事情有些不寻常,对多排做一些事情更为常见。这是p,x对上的循环吗?如果是这样的话,也许有更好的方法来写它dh.iloc[p[A,B,C,D,E,F]=df.iloc[x[A,B,C,D,E,F]
p
和x
是一行。在大熊猫中,对一排做一些事情有些不寻常,对多排做一些事情更为常见。这是p,x对上的循环吗?如果是这样的话,也许有更好的方法来写它dh.iloc[p[A,B,C,D,E,F]=df.iloc[x[A,B,C,D,E,F]]从语法的角度来看似乎是可以接受的,但似乎并不像人们希望的那样有效。“似乎不起作用”从来都不是可操作的信息。你能发布一个SSCCE来显示你想要的可运行代码吗?这样我们就完全具体了。我有一个数据框'df'6列宽,300k+长。数据随机出现“坏数据”-使用不同的索引写入数据帧“dh”有助于消除间隙。我目前使用6条独立的“write”语句,如上所述,将数据写入“dh”中的一行,但执行速度非常慢。建议的语句:dh.iloc[p[A,B,C,D,E,F]=df.iloc[x[A,B,C,D,E,F]]实际上并没有像预期的那样将“水平”写入“dh”中的一行,而是用NaN.dh.iloc[p[A,B,C,D,E,F]=df.iloc[x[A,B,C,D,E,F]]从语法的角度来看,这似乎是可以接受的,但似乎没有达到预期的效果。“似乎不起作用”永远都不是可操作的信息。你能发布一个SSCCE来显示你想要的可运行代码吗?这样我们就完全具体了。我有一个数据框'df'6列宽,300k+长。数据随机出现“坏数据”-使用不同的索引写入数据帧“dh”有助于消除间隙。我目前使用6条独立的“write”语句,如上所述,将数据写入“dh”中的一行,但执行速度非常慢。建议的语句:dh.iloc[p[A,B,C,D,E,F]=df.iloc[x[A,B,C,D,E,F]]实际上并没有像预期的那样将“水平”写入“dh”中的一行,而是用NaN填充“dh”中的一列。