2017-08-12 41 views
1

私はタイムスタンプAとBという名前の3列のパンダデータフレームを持っています。私はタイムスタンプと1つの列Cを持つ新しいデータフレームを作りたいと思います。パンダ:2つの列を交互にする新しい列を作成

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 
関連する問題