簡體   English   中英

根據列名乘以 pandas dataframe 的行,使用另一個 dataframe 的值

[英]Multiply row of pandas dataframe based on column name, using values of another dataframe

我有兩個DataFrames ,如下:

df1 = 


 name1 name2  name3   ....    nameXXX 
  5.1   1.2    1.1    ...      223.2
  3.22  1.34   1.5    ...      213.2
  4.3   1.32   1.23   ...      523.2
  5.2   1.1    1.543  ...      223.2

df2=

name1     0.2
name2     0.1
name3     0.43
...       ...
nameXXX   0.21

我需要的:

df3=

 name1       name2         name3     ...         nameXXX 
5.1 * 0.2   1.2 * 0.1    1.1 * 0.43  ...      223.2 *  0.21
3.22* 0.2   1.34* 0.1    1.5 * 0.43  ...      213.2 * 0.21
4.3 * 0.2   1.32* 0.1    1.2 * 0.43  ...      523.2 * 0.21
5.2 * 0.2   1.1 * 0.1    1.54* 0.43  ...      223.2 *  0.21
  • name是列標題

  • 基本上我想將df1的每一列乘以df2中存在的數字,該數字位於df1的 header 列的同一行中

我看到了以下問題,但找不到解決問題的方法:

1) 如何根據列值從 DataFrame 中獲取 select 行?

2) Pandas:基於列名的列成對乘法

3) 通過從列表中獲取列名來乘以 dataframe 的列

4) pandas: Select dataframe 列基於另一個數據幀的列

如果name列是您的索引,您可以這樣做

df1.mul(df2.iloc[:,0], axis='columns')

如果它是普通列,則可以將其設置為索引:

df1.mul(df2.set_index(0).iloc[:,0], axis='columns')

Output:

   name1  name2    name3  nameXXX
0  1.020  0.120  0.47300   46.872
1  0.644  0.134  0.64500   44.772
2  0.860  0.132  0.52890  109.872
3  1.040  0.110  0.66349   46.872

讓我們做

df1=df1.mul(df2,axis=1)

我認為您需要更新列,基本上如果您的列數與其他 df 中的行數相同,您可以嘗試:

cols = df1.columns for i in cols: df1[i] = df1[i] * df2.loc[i].values

從手機打字抱歉格式化

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM