【问题标题】:How to add all columns in dataframe below first column [closed]如何在第一列下方的数据框中添加所有列[关闭]
【发布时间】:2020-10-25 14:08:13
【问题描述】:

我有以下格式的 excel 数据:

Index 1    1     1     1
A     x    x     x     x 
B     x    x     x     x
C     x    x     x     x

其中 x 是一些时间戳,但由于我知道对我的程序有意义的数据类似于:

Index 1    
A     x     
B     x    
C     x
A     x
B     x
C     x
.
.
4 times

然后我会得到 x 的序列,即时间戳 有什么办法可以做到这一点..? x 只是示例,并不相同。

编辑-----

TRAIN NO    901       902        901         902         901          902
DA      05:40:00    06:00:00    06:12:00    06:24:00    06:36:00    06:48:00
NWWI    05:40:00    06:02:46    06:14:36    06:26:36    06:38:36    06:50:36
NFHH    06:07:20    06:19:00    06:31:00    06:43:00    06:55:00
NFHH    06:00:00    06:12:00    06:24:00    06:36:00    06:48:00    07:00:00
NWWI    06:04:34    06:16:24    06:28:24    06:40:24    06:52:24    07:04:24
DA      06:07:20    06:19:00    06:31:00    06:43:00    06:55:00    07:07:00

从这个表中,我需要所有同名的列都低于第一个列,并将其应用于所有列,这样我只有一列说 901 名称,并且关联的行数据应按行复制,因为它是统一的,所以我知道有可能但不知道怎么做

【问题讨论】:

  • 这能回答你的问题吗? Unpivot Pandas Data
  • 不幸的是,我告诉它不是 x 的相同值,我需要将多个列合并为一个
  • 但是df.melt(id_vars="Index") 使用您发布的内容。您能否提供使用实际数据类型的示例数据?
  • 已添加数据...请您检查一下是否可以做任何事情

标签: python-3.x excel pandas dataframe


【解决方案1】:

您可以将列 (0,1,2) 与 (0,3,4)、(0,5,6) 等垂直连接起来。

数据

df.columns = ["TRAIN NO"] + ["901", "902"] * 3
print(df)    
  TRAIN NO       901       902       901       902       901       902
0       DA  05:40:00  06:00:00  06:12:00  06:24:00  06:36:00  06:48:00
1     NWWI  05:40:00  06:02:46  06:14:36  06:26:36  06:38:36  06:50:36
2     NFHH  06:07:20  06:19:00  06:31:00  06:43:00  06:55:00      None
3     NFHH  06:00:00  06:12:00  06:24:00  06:36:00  06:48:00  07:00:00
4     NWWI  06:04:34  06:16:24  06:28:24  06:40:24  06:52:24  07:04:24
5       DA  06:07:20  06:19:00  06:31:00  06:43:00  06:55:00  07:07:00

代码

df_ans = pd.concat([df.iloc[:, [0, 2*i+1, 2*i+2]] for i in range(int(len(df.columns)/2))], axis=0)

print(df_ans)
  TRAIN NO       901       902
0       DA  05:40:00  06:00:00
1     NWWI  05:40:00  06:02:46
2     NFHH  06:07:20  06:19:00
3     NFHH  06:00:00  06:12:00
4     NWWI  06:04:34  06:16:24
5       DA  06:07:20  06:19:00
0       DA  06:12:00  06:24:00
1     NWWI  06:14:36  06:26:36
2     NFHH  06:31:00  06:43:00
3     NFHH  06:24:00  06:36:00
4     NWWI  06:28:24  06:40:24
5       DA  06:31:00  06:43:00
0       DA  06:36:00  06:48:00
1     NWWI  06:38:36  06:50:36
2     NFHH  06:55:00      None
3     NFHH  06:48:00  07:00:00
4     NWWI  06:52:24  07:04:24
5       DA  06:55:00  07:07:00

【讨论】:

  • 太棒了,这真是天才..但既然我们已经到了这里,所以我会抛出一些更实用的示例数据,我正在处理它......主要的变化是我们在这里看到的那些列我们可以算出它们是相互替代的,但是主要数据有大约一百列,而且只有几列说大约 50 列正在重复,并且捕获的是没有统一的逻辑,因此它们何时会再次出现,所以列就像....101,102,103,104,102,103,102,102,101,104 等等等等,我们该如何处理呢?
  • 请发布另一个问题,因为情况完全不同。注意:针对不同的数据,解决问题的策略可能根本不同。通过以这种增量方式发布问题,您正在使人们浪费时间解决非问题。请下次直接发布实际问题。
猜你喜欢
  • 2022-11-10
  • 1970-01-01
  • 2021-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-26
相关资源
最近更新 更多