2013-08-11 4 views
22

데이터 프레임이 있습니다 df1 여러 열과 행이 있습니다. 간단한 예 :다른 데이터 프레임의 인덱스가있는 빈 데이터 프레임을 만듭니다.

TIME T1 T2 
     1 10 100 
     2 20 200 
     3 30 300 

나는 빈 데이터 프레임 DF2 나중에를 만들려면 계산 결과와 새로운 열을 추가 할 것입니다. 이 순간을 위해

내 코드는 다음과 같습니다

 df1=pd.read_csv("1.txt",index_col="TIME") 

    df2=df1.copy()[[]] #copy df1 and erase all columns 

... 두 개의 새 열 추가 :

 df2["results1"],df2["results2"]=df1["T1"]*df["T2"]*3,df1["T2"]+100 

이 작업을 수행하기 위해 더 나은/안전/빠른 방법이 있나요를? 빈 데이터 프레임 df2를 만들고 df1에서 인덱스 만 복사 할 수 있습니까?

답변

33
df2 = pd.DataFrame(index=df1.index) 

이렇게하면 열이없고 인덱스 만있는 DataFrame이 만들어지며 df1과 동일한 인덱스가됩니다.

+0

그것은 df1.index으로 더 나은 세트 지수의 여부를 확인하는 df2.index입니다 사용할 수 있습니다

df2 = pd.DataFrame(index=df1.index.copy()) 

df1.index.copy로 인덱스를()로 설정하는 것이 좋습니다. 부(); 그렇지 않으면 df1과 df2가 동일한 색인 오브젝트를 공유합니다. – waitingkuo

+2

색인은 이러한 이유 때문에 정확하게 변경되지 않습니다. –

+3

df2.index.name = 'test'를 설정하는 동안 df1의 색인도 이름을 가져옵니다. – waitingkuo

2

그것은 당신이 df1.index들이 동일한 개체

+5

그냥 색인의 불필요한 사본을 만드십시오. 인덱스는 변경 될 수 있다는 두려움없이 다른 데이터 구조간에 공유 할 수 있기 때문에 이러한 이유로 인해 불변합니다. –

관련 문제