Numpy трансляция и для цикла - PullRequest
1 голос
/ 29 января 2020

У меня есть два pd.dataframes.

       df1

           Equipment_Class    0     1       2         3
               PC1         8.72     7.32    0.17    0.00
               PC2        19.18     10.11   8.72    0.35


       df2
            Year    Equipment_Class     0         1          2        3
            2024    PC1                0.7       0.3      0.1         0.0
            2025    PC1                0.6       0.3      0.1         0.0
            2026    PC1                0.6       0.3      0.1         0.0
            2027    PC2                0.4       0.5      0.1         0.0         
            2028    PC2                0.2       0.5      0.1         0.2
            2029    PC2                0.3       0.5      0.1         0.1

Я хочу умножить df1.loc [0, "0": "3"] и df2.loc [0 :, "0": " 3 "], если Equipment_Class совпадают в обоих dfs, т.е. Equipment_class ==" PC1 "или" PC2 "

Я также хочу сделать для l oop, поэтому мне не нужно добавлять вручную по столбцам.

Ниже приведен мой код:

  df3=pd.DataFrame(columns=['PC1','PC2'])
  col_names=df1.Equipment_Class

  for incol,df3column in zip(col_names, df3.columns):
      df3[df3column]=df1.loc[df1.Equipment_Class==incol, "0":"3"].to_numpy() 
                   [None,:]*df2.loc[df2.Equipment_Class==incol, "0":"3"]

Я получил следующее сообщение об ошибке: ValueError: Невозможно привести к Series / DataFrame, dim должно быть <= 2: (1 , 1, 4) </p>

Спасибо за помощь.

1 Ответ

1 голос
/ 29 января 2020
df1=pd.read_csv('input.txt', delim_whitespace=True).set_index('Equipment_Class')
df2=pd.read_csv('input2.txt', delim_whitespace=True).set_index('Equipment_Class')
print(df1.mul(df2.drop('Year', 1), fill_value=1))

производит

                     0      1      2      3
Equipment_Class                            
PC1              6.104  2.196  0.017  0.000
PC1              5.232  2.196  0.017  0.000
PC1              5.232  2.196  0.017  0.000
PC2              7.672  5.055  0.872  0.000
PC2              3.836  5.055  0.872  0.070
PC2              5.754  5.055  0.872  0.035
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...