对于python和pandas非常陌生,我只在尝试学习和自动化乏味的Excel任务时偶尔使用它。我遇到了一个问题,我不能通过Google或这里的Stack Overflow找到我要找的东西。在
我目前有6个不同的excel(.xlsx)文件,我可以分析和读取到数据帧。但是,每当我尝试将它们追加到一起时,它们只是作为新行添加到最终输出的excel文件中,但是我尝试将相似的数据值追加到同一行,而不是同一列,这样我就可以看到这个唯一的值是否显示在这些数据集中。下面是一个简短的例子
[df1]
0 Col1 Col2
1 XYZ 41235
2 OAIS 15123
3 ABC 48938
[df2]
0 Col1 Col2
1 KFJ 21493
2 XYZ 43782
3 SHIZ 31299
4 ABC 33347
[Expected Output]
0 Col1 [df1] [df2]
1 XYZ 41235 43782
2 OAIS 15123
3 ABC 48938 33347
4 KFJ 21493
5 SHIZ 31299
我尝试过使用合并,但是实际的数据表要复杂得多,因为我想在每个数据集中附加23列与每个唯一标识符相关联的数据。例如,[df2]中的[XYZ]在接下来的23列中有关联的信息,我想在[df1]中的[XYZ]值中的23列之后追加这些信息。在
我该怎么做呢?每个excel表中大约有200行,我只需要在[df2]和[df1]中找到一个匹配的唯一标识符,然后用[df1]找到[df3],以此类推,直到[df6]为止,并将这些列附加到一个新的数据帧上,该数据帧最终将作为新的excel文件输出。在
^{pr2}$是目前我将excel文件读入数据帧的方式,我确信我可以循环它,但是,我不确定这样做的最佳实践,而不是硬编码数据帧的每个初始化。在
您需要使用参数how='outer'合并
你得到了
^{pr2}$您可以使用合并功能。在
您可以通过添加到列表
on
来使用多个键。在您可以在here中阅读有关merge函数的更多信息
如果您只需要某些列,则可以通过以下方式访问:
^{pr2}$编辑:
在循环某些df的情况下,您可以循环所有df,但第一个df除外,并将它们全部合并:
对于迭代合并,考虑在列表中存储数据帧,然后使用
reduce()
运行链合并。下面通过Excel文件从列表理解创建一个数据帧列表,其中enumerate()
用于将Col2依次重命名为df1,df2等或者,使用
^{pr2}$pd.concat
并在需要将Col1
设置为索引的地方水平连接数据帧:相关问题 更多 >
编程相关推荐