2017-03-09 1 views
0

나는 Pandas를 사용하고 있으며 열이 이미 설정된 빈 DataFrame에 행을 추가하려고합니다. 내가 실행할 때열이있는 빈 데이터 프레임에 행 추가

지금까지 내 코드는 ..., 그러나 ... 이런 식으로 어떤 행

cereals = addRows(cereals,lines) 
cereals 

dataframe 반환, 단지 열을

def addRows(cereals,lines): 
    for i in np.arange(1,len(lines)): 
     dt = parseLine(lines[i]) 
     dt = pd.Series(dt) 
     print(dt) 
    # YOUR CODE GOES HERE (add dt to cereals) 
     cereals.append(dt, ignore_index = True) 
    return(cereals) 

보인다. 내가 뭘 잘못하고 있는지 잘 모르겠지만 그것은 append 메소드와 관련이 있다는 것을 확신한다. 누구든지 내가 뭘 잘못하고 있는지에 대한 아이디어가 있습니까?

답변

0

이 아마 코드가 의도 한대로 작동하지 않는 이유가 있습니다 :

  • cereals.append(dt, ignore_index = True)

    당신이 생각하는 일을하지 않습니다. 거기에 DataFrame이 아닌 시리즈를 추가하려고합니다.

  • cereals.append(dt, ignore_index = True)cereals을 수정하지 않으므로 반환하면 변경되지 않은 복사본이 반환됩니다.

    >>> def foo(a): 
    ... a + 1 
    ... return a 
    ... 
    >>> foo(1) 
    1 
    

    내 컴퓨터에서이 테스트를하지 않은,하지만 난 당신이 고정 된 솔루션은 다음과 같이 보일 것이다라고 생각 -

가 :

동등한 기능은 다음과 같을 것 그런데

def addRows(cereals, lines): 
    for i in np.arange(1,len(lines)): 
     data = parseLine(lines[i]) 
     new_df = pd.DataFrame(data, columns=cereals.columns) 
     cereals = cereals.append(new_df, ignore_index=True) 
    return cereals 
은 .. 정말 라인이 어디에서 오는 모르겠지만, 지금 당장 나는 적어도 다음과 같이 그것을 수정합니다 :

data = [parseLine(line) for line in lines] 
cereals = cereals.append(pd.DataFrame(data, cereals.columns), ignore_index=True) 

How to add an extra row to a pandas dataframe

또한 새로운 DataFrame을 만들 수 있고 당신의 하나 기존에 그 DataFrame을 추가합니다. 예 :

>>> df = empty_alph.append(alph_abc) 
>>> df.loc[df.shape[0]] = ['d', 3] // df.shape[0] just finds next # in index 
    letter index 
0  a 0.0 
1  b 1.0 
2  c 2.0 
3  d 3.0 
: 내가 링크에서 언급 한 바와 같이

>>> import pandas as pd 
>>> empty_alph = pd.DataFrame(columns=['letter', 'index']) 
>>> alph_abc = pd.DataFrame([['a', 0], ['b', 1], ['c', 2]], columns=['letter', 'index']) 
>>> empty_alph.append(alph_abc) 
    letter index 
0  a 0.0 
1  b 1.0 
2  c 2.0 

, 당신은 또한 DataFrame에 loc 방법을 사용할 수 있습니다

관련 문제