Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 跨多列写入数据帧的更快方法?_Python_Pandas - Fatal编程技术网

Python 跨多列写入数据帧的更快方法?

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]

我有两个数据帧,其中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] = 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”中的一列。