Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.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 Pandas Dataframe到Apache Beam PCollection转换问题_Python_Pandas_Dataframe_Apache Beam - Fatal编程技术网

Python Pandas Dataframe到Apache Beam PCollection转换问题

Python Pandas Dataframe到Apache Beam PCollection转换问题,python,pandas,dataframe,apache-beam,Python,Pandas,Dataframe,Apache Beam,我正在尝试从ApacheBeam将pandas数据帧转换为PCollection。 不幸的是,当我使用来\u pcollection()函数时,我得到以下错误: AttributeError: 'DataFrame' object has no attribute '_expr' 有人知道怎么解决吗? 我正在使用pandas=1.1.4、beam=2.25.0和Python 3.6.9。当我在beam中使用“本机”pandas数据帧而不是由创建的数据帧时,我遇到了这个问题。我怀疑Beam创建的

我正在尝试从ApacheBeam将pandas数据帧转换为PCollection。 不幸的是,当我使用
来\u pcollection()
函数时,我得到以下错误:

AttributeError: 'DataFrame' object has no attribute '_expr'
有人知道怎么解决吗?
我正在使用pandas=1.1.4、beam=2.25.0和Python 3.6.9。

当我在beam中使用“本机”pandas数据帧而不是由
创建的数据帧时,我遇到了这个问题。我怀疑Beam创建的数据框使用本机Pandas数据框没有的新属性(如
\u expr
)对Pandas数据框进行包装或子类化

真正的答案是知道如何使用
apache_beam.dataframe.convert.to_dataframe
,但我不知道如何正确设置代理对象(当我稍后尝试使用
来收集时,会出现单例错误)。因此,由于我无法在2.25.0中找到“正确”的工作方式(我对Beam和Pandas不太熟悉,也不知道代理对象如何工作,所以请恕我直言),我使用以下解决方法:

类SomeDoFn(beam.DoFn):
def进程(self,pair):#pair是一个键/值元组
df=pd.DataFrame(对[1])#只是值的数组
##对数据帧做些什么
...
记录=df.to_dict('记录')
#返回一个与我们收到的元组形状相同的元组
返回[(rec[“key”],rec)用于记录中的rec]
我用这样的方式调用它:

行=(
pcoll
|beam.ParDo(SomeDoFn())
)

我希望其他人会给你一个比这个解决方案更好的答案。

to_pcollection
只打算应用于Beam的延迟数据帧,但从这个角度看,它应该可以工作,并且不清楚如何手动操作。应该可以解决这个问题。

我在beam 2.25.0、pandas 1.1.3和python 3.7.9中遇到了相同的错误
import apache_beam.dataframe.convert import pandas df=pandas.dataframe([1,2,3]pc=apache_beam.dataframe.convert.to_pcollection(df)
AttributeError:“DataFrame”对象没有属性“\u expr”
谢谢!尽管我仍然希望得到问题的答案,但解决方法确实有效:)