Skip to main content
 首页 » 编程设计

python之Pandas 数据框之间的点划分忽略其中一个的第一列

2025年05月04日15yxwkf

我有两个 Pandas 数据框如下:

df1_input = {'patient_id': [ABC], 'p1': [1], 'p2': [4], 'p3': [3]} 
df1 = pd.DataFrame(df1_input, columns=['patient_id', 'p1', 'p2', 'p3']) 

df1 看起来像:

patient_id   p1   p2   p3 
    ABC      1    4    3 
 
df2_input = {'feature': [p1, p2, p3], 'signals': [23, 45, 112]} 
df2 = pd.DataFrame(df2_input, columns=['feature', 'signals'] 

df2 看起来像:

feature   signals 
   p1       23 
   p2       45 
   p3       112 

我想将 df1 中的每个数字除以 df2 中相应的特征,然后再次返回 df1。像这样:

patient_id   p1     p2      p3 
   ABC      1/23   4/45    3/112 

我试过:

final = pd.DataFrame(df1.values / df2.values, index=df1.index, columns=df2.index) 

但是我得到:

ValueError: operands could not be broadcast together with shapes (1,4) (3,2)  

问题是:我无法删除 patient_id 列!否则,我不会认出每个数字属于哪里。有任何想法吗?谢谢!

请您参考如下方法:

在 df1 上使用 loc 和 df2.feature 的列,并使用 df2.signals 的 ndarray 进行内联除法

df1.loc[:, df2.feature] /= df2.signals.values 
 
Out[229]: 
  patient_id        p1        p2        p3 
0        ABC  0.043478  0.088889  0.026786