Dataframe divide series on pandas

*爱你&永不变心* 提交于 2021-02-10 02:31:26

问题


I need to divide each column of the matrix df1 into a single column of the matrix df2. To get a matrix with dimension df1 (3*2).

I need a result: dataframe[[1/6, 2/7, 3/8], [3/6, 4/7, 5,8]]

df1 = pd.DataFrame(data = [[1,2,3],[3,4,5]], index = ['a','b'], columns = ['i','ii','iii'])
df2 = pd.DataFrame(data = [[6],[7],[8]], index = ['a','b','c'], columns = ['i'])

df1.div(df2, axis = 'columns')
=> does not work

for i in range(0,2)
    a = df1[df1.columns[i]] / df2
=> summarizes the result in one column

Thanks for your help


回答1:


Here's one way:

pd.DataFrame(df1.values/ df2.values.T, columns=df1.columns)

       i        ii      iii
0  0.166667  0.285714  0.375
1  0.500000  0.571429  0.625



回答2:


You can divide by Series converted to array by Series.values or Series.to_numpy for pandas 0.24+:

df = df1.div(df2['i'].values)
#pandas 0.24+
#df = df1.div(df2['i'].to_numpy())
print (df)
          i        ii    iii
a  0.166667  0.285714  0.375
b  0.500000  0.571429  0.625



回答3:


with Series :

s = pd.Series(df2.values.flatten().tolist(), index=df1.columns)
print(df1.div(s))

output :

          i        ii    iii
a  0.166667  0.285714  0.375
b  0.500000  0.571429  0.625


来源:https://stackoverflow.com/questions/56168120/dataframe-divide-series-on-pandas

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!