首页 > 解决方案 > 将 Pandas 数据帧与列名和索引名相乘

问题描述

我有两个从 excel 工作簿导入的 pandas 数据框。将项目名称作为第一列,将月份作为列标题。它们的大小相同,并且具有相同的列标题/行索引名称。我想将这两个数据框相乘,最终在第一列中使用相同的项目名称,在标题中使用相同的月份,但在单元格中使用数组的乘积。

我已经尝试过:df * df1,,df.values * df1.values并且df.mul(df1) 每次我得到

TypeError:不能将序列乘以“str”类型的非整数

我的数据的一个简短示例是:

东风:

                  SKU                       2017-01-31   2017-02-28 
0                FUJI Film                     0.761031   0.838831

df1:

                SKU                    2017-01-31          2017-02-28                   
 0          FUJI  FILM                  8557.12              7240.64

我使用以下内容导入了文件:

df = pd.read_excel('C:/desktop/Arrays.xlsx',sheet_name=0)
df1 = pd.read_excel('C:/desktop/Arrays.xlsx',sheet_name=1)

理想情况下,我希望得到一个 df3 ,它是两个数组的乘积,而第一列和标题保持不变。

我很感激任何帮助。

标签: pythonpandasdataframe

解决方案


您可以使用select_dtypes排除非数字类型的列,然后我们使用mul, 和update, 来获取结果并相应地更新值

df.update(df.select_dtypes(exclude='object').mul(df1.select_dtypes(exclude='object')))
df
Out[891]: 
        SKU   2017-01-31   2017-02-28
0  FUJIFilm  6512.233591  6073.673292

推荐阅读