2016-10-14 2 views
1

내가 파이썬에 새로운 오전이 내 첫 번째 게시물입니다 값, 그래서 나는 어떤 모호한 어법을 끼쳐 드려 죄송합니다.삽입 행

I는 몇 번 반복 5 1에서 증가 열 A의 테이블을 갖는다. 나는 열 A를 스캔하고이 패턴 A에 대한 정확한 숫자를 삽입 일치하지 않는 경우, 열 C를 복사하고 열 B에 대한 누락 된 값을두고 싶습니다

그냥 올바른 장소에서 누락 된 값이있는 행을 삽입

도움이 될 것입니다.

Example

답변

2

당신은 reindex 다음 MultiIndex.from_product에 의해 ffill에 의해 열 C에서 누락 된 값 채울 수 :

df['G'] = (df.A.diff().fillna(-1) < 1).cumsum() 
df.set_index(['G','A'], inplace=True) 
print (df) 
     B C 
G A   
1 1 1 Feb 
    2 8 Feb 
    4 64 Feb 
    5 125 Feb 
2 1 0 Feb 
    3 6 Feb 
    4 16 Feb 
    5 31 Feb 
3 1 -3 Feb 
    3 4 Feb 
    4 18 Feb 
    5 29 Feb 
mux = pd.MultiIndex.from_product([df.index.get_level_values('G').unique(), 
            np.arange(1,6)], names=('G','A')) 

df = df.reindex(mux) 
df.C = df.C.ffill() 

df = df.reset_index(level=0, drop=True).reset_index() 
print (df) 
    A  B C 
0 1 1.0 Feb 
1 2 8.0 Feb 
2 3 NaN Feb 
3 4 64.0 Feb 
4 5 125.0 Feb 
5 1 0.0 Feb 
6 2 NaN Feb 
7 3 6.0 Feb 
8 4 16.0 Feb 
9 5 31.0 Feb 
10 1 -3.0 Feb 
11 2 NaN Feb 
12 3 4.0 Feb 
13 4 18.0 Feb 
14 5 29.0 Feb 
+0

아주 멋진 솔루션을. – Dickster

+0

@Dickster - 감사합니다 :) – jezrael