2017-01-17 2 views
1

해당 열 (시리즈) 중 하나를 사용하여 DataFrame을 나눕니다. 둘 다 인덱스를 공유하므로 결과에 원래 DataFrame의 모양이있을 것으로 예상됩니다. 시리즈 공유 인덱스로 데이터 프레임 나누기

이 코드

내가 무슨 짓을했는지 보여줍니다

import numpy as np 
import pandas as pd 
cols = ['A', 'B', 'C', 'D'] 
ix = range(10) 
df = pd.DataFrame(index=ix, columns=cols, data=np.random.randint(0, 100, size=(10, 4))) 

print(df/df['A']) 

결과는 같은 것입니다 :

0 1 2 3 4 5 6 7 8 9 A B C D 
0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
1 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
2 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
3 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
4 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
5 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
6 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
7 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
8 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
9 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 

하지만 그런 일이 생길 사전에

A B C D 
0 1 .. .. .. 
1 1 .. .. .. 
2 1 .. .. .. 
3 1 .. .. .. 
4 1 .. .. .. 
5 1 .. .. .. 
6 1 .. .. .. 
7 1 .. .. .. 
8 1 .. .. .. 
9 89 94 14 44 

감사합니다. axis=0

답변

2

사용 div, 당신이 div를 사용하여 명시 적으로는 인덱스를 따라 방송 axis=0을 통과해야한다, 따라서 당신이 0...9 원래 열을 얻을 열을 정렬 : 당신은 관련을 볼 수 있습니다

In [58]: 

, axis=0 
df.div(df['A'], axis=0) 
Out[58]: 
    A   B   C   D 
0 1.0 0.818182 1.681818 0.431818 
1 1.0 1.562500 0.625000 1.468750 
2 1.0 17.000000 5.400000 2.800000 
3 1.0 9.428571 13.857143 8.285714 
4 1.0 0.256098 0.085366 1.146341 
5 1.0 27.000000 21.500000 7.500000 
6 1.0 0.444444 1.236111 1.041667 
7 1.0 0.268293 0.048780 1.146341 
8 1.0 0.505051 0.434343 0.101010 
9 1.0 0.673684 0.378947 0.873684 

질문 : 방송 규칙을 설명하는 What does the term "broadcasting" mean in Pandas documentation?

관련 문제