2017-08-12 115 views
1

我有一個名爲timestamp,A和B的3列的熊貓數據框。我想創建一個新的數據框,其中包含Timestamp和一列C.C如下:熊貓:創建一個在兩列之間交替的新列

C[1] = A[1] 
C[2]= B[1] 
C[3] = A[2] 
C[4] = B[2] 

時間戳記條目對於前一個數據幀的相同行將是相同的。 什麼是實現上述操作最方便的方法?

+0

https://pandas.pydata.org/pandas-docs/stable /generated/pandas.melt.html – ayhan

+0

我看到我的解決方案不起作用,因爲未經接受。什麼是問題? – jezrael

回答

1

我認爲你需要set_indexstack

df1 = df.set_index('timestamp').stack().rename_axis(('dates', 'cols')).reset_index(name='C') 
print (df1) 
     dates cols C 
0 2012-01-01 A 2 
1 2012-01-01 B 8 
2 2012-01-02 A 3 
3 2012-01-02 B 9 
4 2012-01-03 A 5 
5 2012-01-03 B 1 

或者melt,但值的順序是不同的:

df1 = df.melt(id_vars='timestamp', var_name='cols', value_name='C') 
#pandas bellow 0.20.1 
#df1 = pd.melt(df, id_vars='timestamp', var_name='cols', value_name='C') 
print (df1) 
    timestamp cols C 
0 2012-01-01 A 2 
1 2012-01-02 A 3 
2 2012-01-03 A 5 
3 2012-01-01 B 8 
4 2012-01-02 B 9 
5 2012-01-03 B 1 
相關問題