gpt4 book ai didi

python - pandas dataframe 如何做 "elementwise"连接?

转载 作者:太空宇宙 更新时间:2023-11-04 00:28:37 27 4
gpt4 key购买 nike

我有两个具有相同形状、索引和列的 Pandas 数据框 A,BA 的每个元素都是一个 np.ndarray,形状为 (n,1)B 的每个元素是一个浮点值。现在我想高效B 逐元素附加到 A。一个最小的例子:

index = ['fst', 'scd']

column = ['a','b']

A
Out[23]:
a b
fst [1, 2] [1, 4]
scd [3, 4] [3, 2]

B
Out[24]:
a b
fst 0.392414 0.641136
scd 0.264117 1.644251

resulting_df = pd.DataFrame([[np.append(A.loc[i,j], B.loc[i,j]) for i in index] for j in column], columns=column, index=index)

resulting_df
Out[27]:
a b
fst [1.0, 2.0, 0.392414377685] [3.0, 4.0, 0.264117463613]
scd [1.0, 4.0, 0.641136433253] [3.0, 2.0, 1.64425062851]

有没有类似pd.DataFrame.applymap的东西可以在两个而不是一个 pandas 数据帧之间按元素操作?

最佳答案

您可以使用 applymap 将 df2 中的元素转换为列表,然后只需普通添加即可组合列表,即

index = ['fst', 'scd']

column = ['a','b']


A = pd.DataFrame([[[1, 2],[1, 4]],[[3, 4],[3, 2]]],index,column)
B = pd.DataFrame([[0.392414,0.264117],[ 0.641136 , 1.644251]],index,column)

选项 1:

n =  B.applymap(lambda y: [y])
ndf = A.apply(lambda x : x+n[x.name])

选项 2:使用 pd.concat 了解这是如何工作的检查 here

pd.concat([A,B]).groupby(level=0).apply(lambda g: pd.Series({i: np.hstack(g[i].values) for i in A.columns}))

为了让你当前的方法给出正确的输出移位循环即

pd.DataFrame([[np.append(A.loc[i,j], B.loc[i,j]) for j in A.columns] for i in A.index], columns=A.columns, index=A.index)

输出:

                       a                     bfst  [1.0, 2.0, 0.392414]  [1.0, 4.0, 0.264117]scd  [3.0, 4.0, 0.641136]  [3.0, 2.0, 1.644251]

关于python - pandas dataframe 如何做 "elementwise"连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46580327/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com