当前位置: 代码迷 >> python >> 行值上的数据框的内部联接列表
  详细解决方案

行值上的数据框的内部联接列表

热度:92   发布时间:2023-06-13 16:44:06.0

我在python熊猫中有一个具有相同行名和行值的数据帧列表。 我想做的是产生一个数据框,并在行值上内部连接它们。 我在网上看了一下,发现合并功能,但是这行不通,因为我的行不是列。 有谁知道最好的方法吗? 是否可以采用行值并将其转换为列的解决方案,如果是的话,您该怎么做? 谢谢您的帮助。

输入:

          "happy"   
userid     
   1         2       
   2         8        
   3         9

          "sad"
userid
   1        9
   2        12
   3        11

输出:

           "sad"   "happy"
userid
   1         9        2
   2         12       8
   3         11       9

交换DataFrame的列和行。 如果dfs是您的DataFrames列表,则:

dfs = [df.T for df in dfs]

将使dfs成为转置DataFrame的列表。

然后合并:

merged = dfs[0]
for df in dfs[1:]:
    merged = pd.merge(merged, df, how='inner')

默认情况下, 基于共同共享的所有列合并DataFrame。


请注意,转置需要将原始DataFrame中的所有数据复制到新DataFrame中。 从头开始(如果可能)以正确的(转置的)格式构建DataFrame会比在以后通过转置修复它的效率更高。

看起来您的DataFrames具有索引,在这种情况下, merge()应该指出它是如何进行的:

In [51]: df1
Out[51]:
        "happy"
userid
1             2
2             8
3             9

In [52]: df2
Out[52]:
        "sad"
userid
1           9
2          12
3          11

In [53]: pd.merge(df2, df1, left_index=True, right_index=True)
Out[53]:
        "sad"  "happy"
userid
1           9        2
2          12        8
3          11        9

而且,如果要在DataFrames列表上运行此代码,只需它们:

reduce(lambda x, y: pd.merge(x, y, left_index=True, right_index=True), list_of_dfs)
  相关解决方案