繁体   English   中英

你能将 Pandas 数据帧的元素合并成元组吗?

[英]Can you merge elements of Pandas dataframes into tuples?

如果您在 Python 中有两个具有相同轴的 Pandas 数据框,是否有将元素合并为元组以便它们保持位置的函数? 如果有更好的方法来组合这些数据框而不复制索引或列的数量,那也可以。

预期逻辑:

我正在尝试做的事情的图片

你可以在纯熊猫中做到这一点:

(pd.concat([df1,df2])
   .stack()
   .groupby(level=[0,1])
   .apply(tuple)
   .unstack()
 )

输出:

        A        B
0  (1, 7)  (4, 10)
1  (2, 8)  (5, 11)
2  (3, 9)  (6, 12)

输入:

import pandas as pd 
df1 = pd.DataFrame({"A":[1,2,3],"B":[4,5,6]})
df2 = pd.DataFrame({"A":[7,8,9],"B":[10,11,12]})

您正在寻找的操作看起来像“zip”。 也就是说,将两个序列的元素一起匹配成一个元组序列。 如果您查看数据框中的每一列并将它们压缩在一起,您将得到一个元组列表列表的结果 - 您希望在结果数据框中包含什么。 然后,您可以使用相同的列和索引来构建数据框。 在代码中,它看起来像这样:

data = [list(zip(df1[col], df2[col])) for col in df1]
pd.DataFrame(data, index=[1,2,3], columns=["A", "B", "C"])

你也许可以使用这样的东西来实现你想要的。

df3 = pd.DataFrame({x: zip(df1[x], df2[x]) for x in df1.columns})

df1 = pd.DataFrame({"A" : [1,2,3], "B":[4,5,6]})
df2 = pd.DataFrame({"A" : [7,8,9], "B":[10,11,12]})

def add_dfs(df1, df2):
    for col in df1.columns:
        df1[col] = df1[col].apply(lambda x: (x,))
    for col in df2.columns:
        df2[col] = df2[col].apply(lambda x: (x,))
    df = df1 + df2 # using + operator , satisfies answer technically
    return df

df = add_dfs(df1, df2)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM