Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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_Loops_Dataframe_Concat - Fatal编程技术网

如何在Python中解析多个数据帧?

如何在Python中解析多个数据帧?,python,loops,dataframe,concat,Python,Loops,Dataframe,Concat,我有多个(超过100个)数据帧。我怎么能把它们都看一遍呢 问题是,我有太多的数据帧,无法在列表中手动写入它们,如下所示: >>> cluster_1 = pd.DataFrame([['a', 1], ['b', 2]], ... columns=['letter ', 'number']) >>> cluster_1 letter number 0 a 1 1 b

我有多个(超过100个)数据帧。我怎么能把它们都看一遍呢

问题是,我有太多的数据帧,无法在列表中手动写入它们,如下所示:

>>> cluster_1 = pd.DataFrame([['a', 1], ['b', 2]],
...                    columns=['letter  ', 'number'])


>>> cluster_1
  letter  number
0      a       1
1      b       2


>>> cluster_2 = pd.DataFrame([['c', 3], ['d', 4]],
...                    columns=['letter', 'number'])


>>> cluster_2
  letter  number
0      c       3
1      d       4


>>> pd.concat([cluster_1, cluster_2])
  letter number
0      a       1
1      b       2
0      c       3
1      d       4
我的N个数据帧的名称是cluster_1、cluster_2、cluster_3、…、cluster_N。数字N可能非常高


我如何处理N个数据帧?

我想你可以把它放到一个列表中,然后处理列表。在熊猫中,区块函数已经做到了这一点。我个人在pandas中使用chunk函数时会这样做

pdList = [df1, df2, ...]  # List of your dataframes
new_df = pd.concat(pdList)
若要自动创建pdList,请假定dfs始终以“群集”开头

使用:

如果需要常规索引:

pd.concat(your list of column names,ignore_index=True)

一般来说,情况如下:

frames = [df1, df2, df3]
result = pd.concat(frames)
注意:它将自动重置索引。 阅读有关不同合并类型的更多详细信息

对于大量数据帧: 如果有数百个数据帧,根据磁盘或内存中的数据帧,仍然可以使用for a循环创建列表(“代码段中的帧”)。如果磁盘中有df,只需将所有df保存在一个文件夹中,然后读取该文件夹中的所有文件即可轻松完成


如果要在内存中生成df,可以先尝试将其保存在
.pkl
中。

如何避免手动写入列表?假设超过100个数据帧就太长了。这是我的关键问题Hi PParker,我更新了答案以创建pdList。非常感谢。这是一个很好的解决方案,而且很有效。对于其他想尝试它的人,你应该考虑你首先用PDList= []初始化PDLIST。另外,确保你没有其他的数据流,它从“CultSug”开始,并且有不同的维度,你不想考虑。@ RuiNin如何将我的列表中的数据名命名为字符串类型IE,如果我的PDLIST= = [DF1','DF2','DF3',……]?在本例中,new_df=pd.concat(pdList)抛出错误..我认为您不能以这种方式连接它,因为数据帧是内存中的对象,而表示数据帧名称的字符串。。这些只是字符串。Python无法识别它们是df名称。要克服这个问题,您需要做的就是删除列表中的报价。这样,字符串本身就变成了实际的数据帧。你能更具体地说一下吗?所以你建议我导出所有数据帧,然后使用循环在列表中读取它们?现在如何保存数据帧?他们在哪里得救?或者它们是由您的代码在内存中生成的?
我无法在列表中手动写入它们。此问题的解决方案与
concat
无关。你需要修正你的上游流程来生成一个列表,而不是100个变量。我不明白在另一篇文章中找到的答案如何帮助我回答问题。我可以看到它如何适用于少量的数据帧,但不适用于许多数据帧,如100或更多。我添加了第二个副本以帮助您。您需要重新构造逻辑,以避免创建数量可变的变量。我完全同意,
dict
list
pd.concat
@jpp配合使用。在过去的两天里,我一直试图这样做,但我失败了。
pd.concat(your list of column names,ignore_index=True)
frames = [df1, df2, df3]
result = pd.concat(frames)