python - Pandas :创建一个在两列之间交替的新列

标签 python database pandas

我有一个 pandas 数据框,其中包含 3 列,名为时间戳、A 和 B。我想创建一个新数据框,其中包含时间戳和单列 C。C 的元素如下:

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

对于前一个数据帧的相同行,时间戳条目将相同。 实现上述操作最方便的方法是什么?

最佳答案

我想你需要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

关于python - Pandas :创建一个在两列之间交替的新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45651782/

相关文章:

python - python中的碰撞检测算法

python - 列出所有 memcached 键/值

python - CUDA 初始化 : Unexpected error from cudaGetDeviceCount()

mysql - 在 JOIN 2 次同一个表的查询中使用单个表实例的更智能方法是什么?

python - 循环发送多个 Pandas DataFrames .to_csv()

python - python中main函数调用失败

java - 在命名空间 (, ) 中找到多个表 - SchemaExtractionException

database - wm_concat 的来源

python - 按时间合并 pandas 数据框和另一列

python - 在 Pandas 中使用 groupby 将一列中的内容与另一列进行比较