将Pandas DataFrame与列和索引名称相乘

时间:2018-05-17 22:06:05

标签: python pandas dataframe

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

我尝试过:df * df1df.values * df1.valuesdf.mul(df1)      每次我得到

  

TypeError:不能将序列乘以'str'

类型的非int

我的数据的缩写示例是:

df:

                  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,它是两个数组的乘积,而第一列和标题保持不变。

我感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

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

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