我知道如何在兩個熊貓數據幀之間進行逐元素乘法。但是,當兩個數據框的尺寸不兼容時,情況會變得更加複雜。例如下面df * df2
很簡單,但df * df3
一個問題:熊貓:兩個數據幀的元素相乘
df = pd.DataFrame({'col1' : [1.0] * 5,
'col2' : [2.0] * 5,
'col3' : [3.0] * 5 }, index = range(1,6),)
df2 = pd.DataFrame({'col1' : [10.0] * 5,
'col2' : [100.0] * 5,
'col3' : [1000.0] * 5 }, index = range(1,6),)
df3 = pd.DataFrame({'col1' : [0.1] * 5}, index = range(1,6),)
df.mul(df2, 1) # element by element multiplication no problems
df.mul(df3, 1) # df(row*col) is not equal to df3(row*col)
col1 col2 col3
1 0.1 NaN NaN
2 0.1 NaN NaN
3 0.1 NaN NaN
4 0.1 NaN NaN
5 0.1 NaN NaN
在上述情況下,我怎麼能乘以df3.col1 DF的每列?
我嘗試:我試圖複製df3.col1
len(df.columns.values)
次得到一個數據幀是相同的尺寸df
的:
df3 = pd.DataFrame([df3.col1 for n in range(len(df.columns.values)) ])
df3
1 2 3 4 5
col1 0.1 0.1 0.1 0.1 0.1
col1 0.1 0.1 0.1 0.1 0.1
col1 0.1 0.1 0.1 0.1 0.1
但是這造成尺寸3 * 5的數據幀,而我5 * 3後。我知道我可以用df3.T()
轉置來獲得我需要的東西,但我認爲這不是最快的方法。
謝謝unutbu。'pd.DataFrame(df.values * df3.values,columns = df.columns,index = df.index)'也保留索引,對吧? – Rhubarb
是的,沒錯。 – unutbu