我有一个 pandas 数据框,其中包含 3 列,名为时间戳、A 和 B。我想创建一个新数据框,其中包含时间戳和单列 C。C 的元素如下:
C[1] = A[1]
C[2]= B[1]
C[3] = A[2]
C[4] = B[2]
对于前一个数据帧的相同行,时间戳条目将相同。 实现上述操作最方便的方法是什么?
最佳答案
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
关于python - Pandas :创建一个在两列之间交替的新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45651782/