[英]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.