6

私はこれに似たものを持っています

df = pd.DataFrame(np.random.randint(2, 10, size = (5, 2)))
df.index = pd.MultiIndex.from_tuples([(1, 'A'), (2, 'A'), (4, 'B'), 
           (5, 'B'), (8, 'B')])
df.index.names = ['foo', 'bar']
df.columns = ['count1', 'count2']
df

与える:

       count1 count2
foo bar     
1   A    6     7
2   A    2     9
4   B    6     7
5   B    4     6
8   B    5     6

また、同じ「foo」インデックスによって、別の場所から取得した合計のリストもあります。

totals = pd.DataFrame([2., 1., 1., 1., 10.])
totals.index = [1, 2, 4, 5, 8]
totals.index.names = ['foo']
totals

与える:

     0
foo 
1    2
2    1
4    1
5    1
8    10

dfのすべての列( count1count2 ) をtotalsにある foo の数で割るにはどうすればよいですか? (したがって、「foo」番号で一致させる必要があります)

私はこの質問をチェックしましたが、これでうまくいくはずですが、わかりませんでした。

私は試した

df.div(totals, axis = 0)

divのlevelオプションを変更しましたが、成功しませんでした。

いつもありがとうございます

4

2 に答える 2

3

values作品からリストを使用totals[0]する:

df.div(totals[0].values, axis=0)

totalsただし、Index fromは考慮されていません。これが機能しない理由がわかりません:

df.div(totals[0], level=0, axis=0)
于 2013-10-22T17:06:58.087 に答える