2017-08-12 83 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 
相关问题