gpt4 book ai didi

python - 将两个不同大小的 Pandas 数据框按元素相乘,并添加一个维度作为附加索引/列

转载 作者:行者123 更新时间:2023-11-28 21:39:51 25 4
gpt4 key购买 nike

我想将两个大小不同的 pandas 数据帧 df1 和 df2 相乘。

df1=pd.DataFrame(np.random.randn(6,3),index=list("ABCDEF"),columns=list("XYZ"))
df1
df2=pd.DataFrame(np.random.randn(6,1),index=list("KLMNOP"))
df2

我想要:

df1*df2 # element-wise for all values in df1 and df2

结果将是一个具有层次结构索引的数据框,保留列名,如下所示。我该怎么做?

    X  Y  Z
K A
B
C
D
E
F
L A
B
C
D
E
F
...
P A
B
C
D
E
F

我试过以下方法

for x in df2:
y=x*df1
print(y)

但在这种情况下我丢失了 index=list("KLMNOP") 的维度

最佳答案

通过使用 , pd.concatkeys :)

ldf=[]
for i in df2[0]:
ldf.append(df1*i)
target=pd.concat(ldf,axis=0,keys=df2.index.values)


target
Out[88]:
X Y Z
K A 0.068958 0.962846 0.691092
B -0.262507 0.607219 1.079655
C -0.391440 0.569737 0.365277
D -0.229981 -0.277291 0.859837
E -0.966434 -0.189392 -0.119505
F -0.744944 0.315524 0.101557
L A 0.078607 1.097578 0.787797
B -0.299239 0.692188 1.230732
C -0.446215 0.649461 0.416390
D -0.262162 -0.316093 0.980155
E -1.101669 -0.215894 -0.136228
F -0.849185 0.359675 0.115769
M A 0.043680 0.609898 0.437760
B -0.166280 0.384633 0.683889
C -0.247951 0.360890 0.231378
D -0.145677 -0.175645 0.544649
E -0.612171 -0.119967 -0.075698
F -0.471872 0.199863 0.064330
N A -0.090919 -1.269487 -0.911187
B 0.346108 -0.800603 -1.423497
C 0.516104 -0.751183 -0.481608
D 0.303224 0.365601 -1.133673
E 1.274219 0.249709 0.157564
F 0.982189 -0.416010 -0.133901
O A 0.075041 1.047780 0.752054
B -0.285663 0.660783 1.174892
C -0.425970 0.619994 0.397498
D -0.250268 -0.301751 0.935685
E -1.051685 -0.206099 -0.130047
F -0.810656 0.343356 0.110516
P A -0.025643 -0.358041 -0.256988
B 0.097615 -0.225799 -0.401478
C 0.145560 -0.211861 -0.135831
D 0.085520 0.103113 -0.319737
E 0.359376 0.070427 0.044439
F 0.277013 -0.117330 -0.037765

关于python - 将两个不同大小的 Pandas 数据框按元素相乘,并添加一个维度作为附加索引/列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46258981/

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