简体   繁体   中英

How to subset a dataframe with given pairs or row indices and column labels?

I am given a dataframe ( df_path ) below, where the index corresponds to the index of the dataframe ( df_from ) i want to copy values from, and the values represent the column of the dataframe I want to copy values from.

**df_path**
{0: {Timestamp('2017-04-05 10:18:02.095000'): 0,
  Timestamp('2017-04-05 10:35:03.740000'): 0,
  Timestamp('2017-04-05 10:57:18.364000'): 0,
  Timestamp('2017-04-05 11:10:09.142000'): 0,
  Timestamp('2017-04-07 09:41:11.167000'): 0,
  Timestamp('2017-04-07 09:47:22.457000'): 0,
  Timestamp('2017-04-07 09:51:22.037000'): 0,
  Timestamp('2017-04-07 09:54:59.803000'): 0,
  Timestamp('2017-04-07 09:58:49.512000'): 0,
  Timestamp('2017-04-07 10:05:45.506000'): 0,
  Timestamp('2017-04-07 10:06:38.567000'): 0,
  Timestamp('2017-04-24 09:32:06.261000'): 0,
  Timestamp('2017-05-10 09:36:56.943000'): 0,
  Timestamp('2017-05-29 09:31:32.211000'): 0,
  Timestamp('2017-06-19 09:33:56.391000'): 0,
  Timestamp('2017-06-19 09:36:11.743000'): 0,
  Timestamp('2017-06-28 10:06:58.320000'): 1,
  Timestamp('2017-06-28 10:12:04.859000'): 1,
  Timestamp('2017-07-10 09:58:36.082000'): 1,
  Timestamp('2017-07-11 09:43:03.421000'): 1,
  Timestamp('2017-07-12 09:27:27.504000'): 2,
  Timestamp('2017-07-12 09:31:16.304000'): 2,
  Timestamp('2017-07-12 09:32:47.592000'): 2,
  Timestamp('2017-07-12 09:33:43.216000'): 2,
  Timestamp('2017-07-26 09:19:23.656000'): 2,
  Timestamp('2017-07-26 09:32:07.647000'): 2,
  Timestamp('2017-07-26 09:34:16.047000'): 2,
  Timestamp('2017-07-26 09:36:29.241000'): 2,
  Timestamp('2017-07-26 09:41:14.152000'): 2,
  Timestamp('2017-07-26 09:45:01.198000'): 2,
  Timestamp('2017-07-26 09:49:06.674000'): 2,
  Timestamp('2017-08-07 09:17:59.231000'): 2,
  Timestamp('2017-08-07 09:25:57.865000'): 2,
  Timestamp('2017-08-07 09:31:29.751000'): 2,
  Timestamp('2017-08-07 09:35:27.062000'): 2,
  Timestamp('2017-08-15 09:23:40.111000'): 3,
  Timestamp('2017-08-16 09:17:48.032000'): 3,
  Timestamp('2017-08-16 09:20:37.396000'): 3,
  Timestamp('2017-08-16 09:26:34.631000'): 3,
  Timestamp('2017-08-16 10:01:35.525000'): 3,
  Timestamp('2017-08-16 10:06:06.222000'): 3,
  Timestamp('2017-08-16 10:38:44.717000'): 3,
  Timestamp('2017-08-17 09:17:18.951000'): 3,
  Timestamp('2017-08-17 09:21:33.846000'): 3,
  Timestamp('2017-08-17 09:28:14.337000'): 3,
  Timestamp('2017-08-17 09:30:42.855000'): 3,
  Timestamp('2017-08-17 09:31:35.894000'): 3,
  Timestamp('2017-08-17 09:33:15.819000'): 3,
  Timestamp('2017-08-17 09:35:23.751000'): 3,
  Timestamp('2017-08-17 09:38:45.211000'): 3,
  Timestamp('2017-08-17 09:41:25.251000'): 3,
  Timestamp('2017-08-17 09:45:21.319000'): 3,
  Timestamp('2017-08-17 09:47:55.097000'): 3,
  Timestamp('2017-08-17 09:50:17.234000'): 3,
  Timestamp('2017-08-17 09:51:49.333000'): 3,
  Timestamp('2017-08-18 10:13:44.958000'): 4,
  Timestamp('2017-08-18 10:19:25.371000'): 4,
  Timestamp('2017-08-18 10:25:33.984000'): 4,
  Timestamp('2017-08-18 10:31:29.450000'): 4,
  Timestamp('2017-08-18 10:42:42.320000'): 4,
  Timestamp('2017-08-18 10:53:34.495000'): 4,
  Timestamp('2017-08-29 09:38:10.660000'): 4,
  Timestamp('2017-08-29 09:42:50.701000'): 4,
  Timestamp('2017-08-29 09:45:21.301000'): 4,
  Timestamp('2017-09-04 09:34:11.032000'): 4,
  Timestamp('2017-09-07 09:34:48.306000'): 4,
  Timestamp('2017-09-07 09:45:30.120000'): 4,
  Timestamp('2017-09-11 09:16:19.693000'): 4,
  Timestamp('2017-09-11 09:19:50.156000'): 4,
  Timestamp('2017-09-11 09:30:40.390000'): 4},
 1: {Timestamp('2017-04-05 10:18:02.095000'): 1,
  Timestamp('2017-04-05 10:35:03.740000'): 1,
  Timestamp('2017-04-05 10:57:18.364000'): 1,
  Timestamp('2017-04-05 11:10:09.142000'): 1,
  Timestamp('2017-04-07 09:41:11.167000'): 1,
  Timestamp('2017-04-07 09:47:22.457000'): 1,
  Timestamp('2017-04-07 09:51:22.037000'): 1,
  Timestamp('2017-04-07 09:54:59.803000'): 1,
  Timestamp('2017-04-07 09:58:49.512000'): 1,
  Timestamp('2017-04-07 10:05:45.506000'): 1,
  Timestamp('2017-04-07 10:06:38.567000'): 1,
  Timestamp('2017-04-24 09:32:06.261000'): 1,
  Timestamp('2017-05-10 09:36:56.943000'): 5,
  Timestamp('2017-05-29 09:31:32.211000'): 5,
  Timestamp('2017-06-19 09:33:56.391000'): 5,
  Timestamp('2017-06-19 09:36:11.743000'): 5,
  Timestamp('2017-06-28 10:06:58.320000'): 5,
  Timestamp('2017-06-28 10:12:04.859000'): 5,
  Timestamp('2017-07-10 09:58:36.082000'): 5,
  Timestamp('2017-07-11 09:43:03.421000'): 5,
  Timestamp('2017-07-12 09:27:27.504000'): 6,
  Timestamp('2017-07-12 09:31:16.304000'): 6,
  Timestamp('2017-07-12 09:32:47.592000'): 6,
  Timestamp('2017-07-12 09:33:43.216000'): 6,
  Timestamp('2017-07-26 09:19:23.656000'): 6,
  Timestamp('2017-07-26 09:32:07.647000'): 6,
  Timestamp('2017-07-26 09:34:16.047000'): 6,
  Timestamp('2017-07-26 09:36:29.241000'): 6,
  Timestamp('2017-07-26 09:41:14.152000'): 6,
  Timestamp('2017-07-26 09:45:01.198000'): 6,
  Timestamp('2017-07-26 09:49:06.674000'): 6,
  Timestamp('2017-08-07 09:17:59.231000'): 6,
  Timestamp('2017-08-07 09:25:57.865000'): 6,
  Timestamp('2017-08-07 09:31:29.751000'): 6,
  Timestamp('2017-08-07 09:35:27.062000'): 6,
  Timestamp('2017-08-15 09:23:40.111000'): 7,
  Timestamp('2017-08-16 09:17:48.032000'): 7,
  Timestamp('2017-08-16 09:20:37.396000'): 7,
  Timestamp('2017-08-16 09:26:34.631000'): 7,
  Timestamp('2017-08-16 10:01:35.525000'): 7,
  Timestamp('2017-08-16 10:06:06.222000'): 7,
  Timestamp('2017-08-16 10:38:44.717000'): 7,
  Timestamp('2017-08-17 09:17:18.951000'): 7,
  Timestamp('2017-08-17 09:21:33.846000'): 7,
  Timestamp('2017-08-17 09:28:14.337000'): 7,
  Timestamp('2017-08-17 09:30:42.855000'): 7,
  Timestamp('2017-08-17 09:31:35.894000'): 7,
  Timestamp('2017-08-17 09:33:15.819000'): 7,
  Timestamp('2017-08-17 09:35:23.751000'): 7,
  Timestamp('2017-08-17 09:38:45.211000'): 7,
  Timestamp('2017-08-17 09:41:25.251000'): 7,
  Timestamp('2017-08-17 09:45:21.319000'): 7,
  Timestamp('2017-08-17 09:47:55.097000'): 7,
  Timestamp('2017-08-17 09:50:17.234000'): 7,
  Timestamp('2017-08-17 09:51:49.333000'): 7,
  Timestamp('2017-08-18 10:13:44.958000'): 8,
  Timestamp('2017-08-18 10:19:25.371000'): 8,
  Timestamp('2017-08-18 10:25:33.984000'): 8,
  Timestamp('2017-08-18 10:31:29.450000'): 8,
  Timestamp('2017-08-18 10:42:42.320000'): 8,
  Timestamp('2017-08-18 10:53:34.495000'): 8,
  Timestamp('2017-08-29 09:38:10.660000'): 8,
  Timestamp('2017-08-29 09:42:50.701000'): 8,
  Timestamp('2017-08-29 09:45:21.301000'): 8,
  Timestamp('2017-09-04 09:34:11.032000'): 8,
  Timestamp('2017-09-07 09:34:48.306000'): 8,
  Timestamp('2017-09-07 09:45:30.120000'): 8,
  Timestamp('2017-09-11 09:16:19.693000'): 8,
  Timestamp('2017-09-11 09:19:50.156000'): 8,
  Timestamp('2017-09-11 09:30:40.390000'): 8},
 2: {Timestamp('2017-04-05 10:18:02.095000'): 2,
  Timestamp('2017-04-05 10:35:03.740000'): 2,
  Timestamp('2017-04-05 10:57:18.364000'): 2,
  Timestamp('2017-04-05 11:10:09.142000'): 2,
  Timestamp('2017-04-07 09:41:11.167000'): 2,
  Timestamp('2017-04-07 09:47:22.457000'): 2,
  Timestamp('2017-04-07 09:51:22.037000'): 2,
  Timestamp('2017-04-07 09:54:59.803000'): 2,
  Timestamp('2017-04-07 09:58:49.512000'): 2,
  Timestamp('2017-04-07 10:05:45.506000'): 2,
  Timestamp('2017-04-07 10:06:38.567000'): 2,
  Timestamp('2017-04-24 09:32:06.261000'): 2,
  Timestamp('2017-05-10 09:36:56.943000'): 6,
  Timestamp('2017-05-29 09:31:32.211000'): 6,
  Timestamp('2017-06-19 09:33:56.391000'): 6,
  Timestamp('2017-06-19 09:36:11.743000'): 6,
  Timestamp('2017-06-28 10:06:58.320000'): 9,
  Timestamp('2017-06-28 10:12:04.859000'): 9,
  Timestamp('2017-07-10 09:58:36.082000'): 9,
  Timestamp('2017-07-11 09:43:03.421000'): 9,
  Timestamp('2017-07-12 09:27:27.504000'): 9,
  Timestamp('2017-07-12 09:31:16.304000'): 9,
  Timestamp('2017-07-12 09:32:47.592000'): 9,
  Timestamp('2017-07-12 09:33:43.216000'): 9,
  Timestamp('2017-07-26 09:19:23.656000'): 9,
  Timestamp('2017-07-26 09:32:07.647000'): 9,
  Timestamp('2017-07-26 09:34:16.047000'): 9,
  Timestamp('2017-07-26 09:36:29.241000'): 9,
  Timestamp('2017-07-26 09:41:14.152000'): 9,
  Timestamp('2017-07-26 09:45:01.198000'): 9,
  Timestamp('2017-07-26 09:49:06.674000'): 9,
  Timestamp('2017-08-07 09:17:59.231000'): 9,
  Timestamp('2017-08-07 09:25:57.865000'): 9,
  Timestamp('2017-08-07 09:31:29.751000'): 9,
  Timestamp('2017-08-07 09:35:27.062000'): 9,
  Timestamp('2017-08-15 09:23:40.111000'): 10,
  Timestamp('2017-08-16 09:17:48.032000'): 10,
  Timestamp('2017-08-16 09:20:37.396000'): 10,
  Timestamp('2017-08-16 09:26:34.631000'): 10,
  Timestamp('2017-08-16 10:01:35.525000'): 10,
  Timestamp('2017-08-16 10:06:06.222000'): 10,
  Timestamp('2017-08-16 10:38:44.717000'): 10,
  Timestamp('2017-08-17 09:17:18.951000'): 10,
  Timestamp('2017-08-17 09:21:33.846000'): 10,
  Timestamp('2017-08-17 09:28:14.337000'): 10,
  Timestamp('2017-08-17 09:30:42.855000'): 10,
  Timestamp('2017-08-17 09:31:35.894000'): 10,
  Timestamp('2017-08-17 09:33:15.819000'): 10,
  Timestamp('2017-08-17 09:35:23.751000'): 10,
  Timestamp('2017-08-17 09:38:45.211000'): 10,
  Timestamp('2017-08-17 09:41:25.251000'): 10,
  Timestamp('2017-08-17 09:45:21.319000'): 10,
  Timestamp('2017-08-17 09:47:55.097000'): 10,
  Timestamp('2017-08-17 09:50:17.234000'): 10,
  Timestamp('2017-08-17 09:51:49.333000'): 10,
  Timestamp('2017-08-18 10:13:44.958000'): 11,
  Timestamp('2017-08-18 10:19:25.371000'): 11,
  Timestamp('2017-08-18 10:25:33.984000'): 11,
  Timestamp('2017-08-18 10:31:29.450000'): 11,
  Timestamp('2017-08-18 10:42:42.320000'): 11,
  Timestamp('2017-08-18 10:53:34.495000'): 11,
  Timestamp('2017-08-29 09:38:10.660000'): 11,
  Timestamp('2017-08-29 09:42:50.701000'): 11,
  Timestamp('2017-08-29 09:45:21.301000'): 11,
  Timestamp('2017-09-04 09:34:11.032000'): 11,
  Timestamp('2017-09-07 09:34:48.306000'): 11,
  Timestamp('2017-09-07 09:45:30.120000'): 11,
  Timestamp('2017-09-11 09:16:19.693000'): 11,
  Timestamp('2017-09-11 09:19:50.156000'): 11,
  Timestamp('2017-09-11 09:30:40.390000'): 11},
 3: {Timestamp('2017-04-05 10:18:02.095000'): 3,
  Timestamp('2017-04-05 10:35:03.740000'): 3,
  Timestamp('2017-04-05 10:57:18.364000'): 3,
  Timestamp('2017-04-05 11:10:09.142000'): 3,
  Timestamp('2017-04-07 09:41:11.167000'): 3,
  Timestamp('2017-04-07 09:47:22.457000'): 3,
  Timestamp('2017-04-07 09:51:22.037000'): 3,
  Timestamp('2017-04-07 09:54:59.803000'): 3,
  Timestamp('2017-04-07 09:58:49.512000'): 3,
  Timestamp('2017-04-07 10:05:45.506000'): 3,
  Timestamp('2017-04-07 10:06:38.567000'): 3,
  Timestamp('2017-04-24 09:32:06.261000'): 3,
  Timestamp('2017-05-10 09:36:56.943000'): 7,
  Timestamp('2017-05-29 09:31:32.211000'): 7,
  Timestamp('2017-06-19 09:33:56.391000'): 7,
  Timestamp('2017-06-19 09:36:11.743000'): 7,
  Timestamp('2017-06-28 10:06:58.320000'): 10,
  Timestamp('2017-06-28 10:12:04.859000'): 10,
  Timestamp('2017-07-10 09:58:36.082000'): 10,
  Timestamp('2017-07-11 09:43:03.421000'): 10,
  Timestamp('2017-07-12 09:27:27.504000'): 12,
  Timestamp('2017-07-12 09:31:16.304000'): 12,
  Timestamp('2017-07-12 09:32:47.592000'): 12,
  Timestamp('2017-07-12 09:33:43.216000'): 12,
  Timestamp('2017-07-26 09:19:23.656000'): 12,
  Timestamp('2017-07-26 09:32:07.647000'): 12,
  Timestamp('2017-07-26 09:34:16.047000'): 12,
  Timestamp('2017-07-26 09:36:29.241000'): 12,
  Timestamp('2017-07-26 09:41:14.152000'): 12,
  Timestamp('2017-07-26 09:45:01.198000'): 12,
  Timestamp('2017-07-26 09:49:06.674000'): 12,
  Timestamp('2017-08-07 09:17:59.231000'): 12,
  Timestamp('2017-08-07 09:25:57.865000'): 12,
  Timestamp('2017-08-07 09:31:29.751000'): 12,
  Timestamp('2017-08-07 09:35:27.062000'): 12,
  Timestamp('2017-08-15 09:23:40.111000'): 12,
  Timestamp('2017-08-16 09:17:48.032000'): 12,
  Timestamp('2017-08-16 09:20:37.396000'): 12,
  Timestamp('2017-08-16 09:26:34.631000'): 12,
  Timestamp('2017-08-16 10:01:35.525000'): 12,
  Timestamp('2017-08-16 10:06:06.222000'): 12,
  Timestamp('2017-08-16 10:38:44.717000'): 12,
  Timestamp('2017-08-17 09:17:18.951000'): 12,
  Timestamp('2017-08-17 09:21:33.846000'): 12,
  Timestamp('2017-08-17 09:28:14.337000'): 12,
  Timestamp('2017-08-17 09:30:42.855000'): 12,
  Timestamp('2017-08-17 09:31:35.894000'): 12,
  Timestamp('2017-08-17 09:33:15.819000'): 12,
  Timestamp('2017-08-17 09:35:23.751000'): 12,
  Timestamp('2017-08-17 09:38:45.211000'): 12,
  Timestamp('2017-08-17 09:41:25.251000'): 12,
  Timestamp('2017-08-17 09:45:21.319000'): 12,
  Timestamp('2017-08-17 09:47:55.097000'): 12,
  Timestamp('2017-08-17 09:50:17.234000'): 12,
  Timestamp('2017-08-17 09:51:49.333000'): 12,
  Timestamp('2017-08-18 10:13:44.958000'): 13,
  Timestamp('2017-08-18 10:19:25.371000'): 13,
  Timestamp('2017-08-18 10:25:33.984000'): 13,
  Timestamp('2017-08-18 10:31:29.450000'): 13,
  Timestamp('2017-08-18 10:42:42.320000'): 13,
  Timestamp('2017-08-18 10:53:34.495000'): 13,
  Timestamp('2017-08-29 09:38:10.660000'): 13,
  Timestamp('2017-08-29 09:42:50.701000'): 13,
  Timestamp('2017-08-29 09:45:21.301000'): 13,
  Timestamp('2017-09-04 09:34:11.032000'): 13,
  Timestamp('2017-09-07 09:34:48.306000'): 13,
  Timestamp('2017-09-07 09:45:30.120000'): 13,
  Timestamp('2017-09-11 09:16:19.693000'): 13,
  Timestamp('2017-09-11 09:19:50.156000'): 13,
  Timestamp('2017-09-11 09:30:40.390000'): 13},
 4: {Timestamp('2017-04-05 10:18:02.095000'): 4,
  Timestamp('2017-04-05 10:35:03.740000'): 4,
  Timestamp('2017-04-05 10:57:18.364000'): 4,
  Timestamp('2017-04-05 11:10:09.142000'): 4,
  Timestamp('2017-04-07 09:41:11.167000'): 4,
  Timestamp('2017-04-07 09:47:22.457000'): 4,
  Timestamp('2017-04-07 09:51:22.037000'): 4,
  Timestamp('2017-04-07 09:54:59.803000'): 4,
  Timestamp('2017-04-07 09:58:49.512000'): 4,
  Timestamp('2017-04-07 10:05:45.506000'): 4,
  Timestamp('2017-04-07 10:06:38.567000'): 4,
  Timestamp('2017-04-24 09:32:06.261000'): 4,
  Timestamp('2017-05-10 09:36:56.943000'): 8,
  Timestamp('2017-05-29 09:31:32.211000'): 8,
  Timestamp('2017-06-19 09:33:56.391000'): 8,
  Timestamp('2017-06-19 09:36:11.743000'): 8,
  Timestamp('2017-06-28 10:06:58.320000'): 11,
  Timestamp('2017-06-28 10:12:04.859000'): 11,
  Timestamp('2017-07-10 09:58:36.082000'): 11,
  Timestamp('2017-07-11 09:43:03.421000'): 11,
  Timestamp('2017-07-12 09:27:27.504000'): 13,
  Timestamp('2017-07-12 09:31:16.304000'): 13,
  Timestamp('2017-07-12 09:32:47.592000'): 13,
  Timestamp('2017-07-12 09:33:43.216000'): 13,
  Timestamp('2017-07-26 09:19:23.656000'): 13,
  Timestamp('2017-07-26 09:32:07.647000'): 13,
  Timestamp('2017-07-26 09:34:16.047000'): 13,
  Timestamp('2017-07-26 09:36:29.241000'): 13,
  Timestamp('2017-07-26 09:41:14.152000'): 13,
  Timestamp('2017-07-26 09:45:01.198000'): 13,
  Timestamp('2017-07-26 09:49:06.674000'): 13,
  Timestamp('2017-08-07 09:17:59.231000'): 13,
  Timestamp('2017-08-07 09:25:57.865000'): 13,
  Timestamp('2017-08-07 09:31:29.751000'): 13,
  Timestamp('2017-08-07 09:35:27.062000'): 13,
  Timestamp('2017-08-15 09:23:40.111000'): 14,
  Timestamp('2017-08-16 09:17:48.032000'): 14,
  Timestamp('2017-08-16 09:20:37.396000'): 14,
  Timestamp('2017-08-16 09:26:34.631000'): 14,
  Timestamp('2017-08-16 10:01:35.525000'): 14,
  Timestamp('2017-08-16 10:06:06.222000'): 14,
  Timestamp('2017-08-16 10:38:44.717000'): 14,
  Timestamp('2017-08-17 09:17:18.951000'): 14,
  Timestamp('2017-08-17 09:21:33.846000'): 14,
  Timestamp('2017-08-17 09:28:14.337000'): 14,
  Timestamp('2017-08-17 09:30:42.855000'): 14,
  Timestamp('2017-08-17 09:31:35.894000'): 14,
  Timestamp('2017-08-17 09:33:15.819000'): 14,
  Timestamp('2017-08-17 09:35:23.751000'): 14,
  Timestamp('2017-08-17 09:38:45.211000'): 14,
  Timestamp('2017-08-17 09:41:25.251000'): 14,
  Timestamp('2017-08-17 09:45:21.319000'): 14,
  Timestamp('2017-08-17 09:47:55.097000'): 14,
  Timestamp('2017-08-17 09:50:17.234000'): 14,
  Timestamp('2017-08-17 09:51:49.333000'): 14,
  Timestamp('2017-08-18 10:13:44.958000'): 14,
  Timestamp('2017-08-18 10:19:25.371000'): 14,
  Timestamp('2017-08-18 10:25:33.984000'): 14,
  Timestamp('2017-08-18 10:31:29.450000'): 14,
  Timestamp('2017-08-18 10:42:42.320000'): 14,
  Timestamp('2017-08-18 10:53:34.495000'): 14,
  Timestamp('2017-08-29 09:38:10.660000'): 14,
  Timestamp('2017-08-29 09:42:50.701000'): 14,
  Timestamp('2017-08-29 09:45:21.301000'): 14,
  Timestamp('2017-09-04 09:34:11.032000'): 14,
  Timestamp('2017-09-07 09:34:48.306000'): 14,
  Timestamp('2017-09-07 09:45:30.120000'): 14,
  Timestamp('2017-09-11 09:16:19.693000'): 14,
  Timestamp('2017-09-11 09:19:50.156000'): 14,
  Timestamp('2017-09-11 09:30:40.390000'): 14}}

At the moment I am using the for loop to subset and create the new dataframe ( result ). But is there a more efficient way to do this without using for loop?

df_from = pd.DataFrame(np.random.normal(0,1,size = (70,15)),index = df_ticks_paths.index)

result = pd.DataFrame(np.nan, index = df_from.index, columns = df_from.columns)
    for idx, row in df_path.iterrows():
        for col, col_copy in row.iteritems():
            result.loc[idx,col] = df_from.loc[idx, col_copy]

Here is another way to it which is, on my machine, twice as fast in average.

# In your post, you do not provide `df_ticks_paths.index`,
# so I make up one for demonstration purpose

df_ticks_paths_index = pd.DatetimeIndex(
    [
        "2017-04-04 10:18:02.095000",
        "2017-04-05 10:35:03.740000",
        "2017-04-05 10:59:18.364000",
        "2017-04-07 09:41:11.167000",
        "2017-09-05 11:10:09.142000",
        "2017-10-07 19:41:11.167000",
    ],
    dtype="datetime64[ns]",
    freq=None,
)

df_from = pd.DataFrame(np.random.normal(0, 1, size=(6, 15)), index=df_ticks_paths_index)
print(df_from)
# Output
                               0         1         2         3         4   \
2017-04-04 10:18:02.095 -0.535905  0.569140  1.401489  0.551076  0.158319   
2017-04-05 10:35:03.740 -1.474314  0.318631  0.178816  1.333643  1.097234   
2017-04-05 10:59:18.364  1.878162  0.805685 -1.132736  0.184201  0.008899   
2017-04-07 09:41:11.167 -0.480329  0.575849  1.855999  0.815211 -0.126898   
2017-09-05 11:10:09.142  0.858272 -0.759353  0.275809 -0.228938  0.782700   
2017-10-07 19:41:11.167 -0.914579 -0.347113  0.225863  0.126135 -1.987540   
2017-09-11 09:30:40.390 -0.807214  0.511869 -0.980860  0.944337  0.618520   

                         ...        10        11        12        13        14  
2017-04-04 10:18:02.095  ... -0.259234  0.861597 -1.297222  1.467518  0.209933  
2017-04-05 10:35:03.740  ...  1.894300  0.592537 -0.146224 -1.392316  2.056190  
2017-04-05 10:59:18.364  ... -0.695715  1.236572  0.036024  0.701121  1.013895  
2017-04-07 09:41:11.167  ... -0.035515 -0.359212  0.952660 -1.192822  0.103593  
2017-09-05 11:10:09.142  ... -0.702647  1.212190  0.901758  0.343678  1.910087  
2017-10-07 19:41:11.167  ...  0.018768  0.544317  0.218981  0.625162  0.043180  
2017-09-11 09:30:40.390  ...  0.505412  1.254301 -1.048322  0.222409  0.962458  

[7 rows x 15 columns]
print(df_path)
# Output
                         0  1   2   3   4
2017-04-05 10:18:02.095  0  1   2   3   4
2017-04-05 10:35:03.740  0  1   2   3   4
2017-04-05 10:57:18.364  0  1   2   3   4
2017-04-05 11:10:09.142  0  1   2   3   4
2017-04-07 09:41:11.167  0  1   2   3   4
...                     .. ..  ..  ..  ..
2017-09-07 09:34:48.306  4  8  11  13  14
2017-09-07 09:45:30.120  4  8  11  13  14
2017-09-11 09:16:19.693  4  8  11  13  14
2017-09-11 09:19:50.156  4  8  11  13  14
2017-09-11 09:30:40.390  4  8  11  13  14

[70 rows x 5 columns]

Then:

df_path.columns = [f"col{x}" for x in df_path.columns]

df = pd.merge(
    left=df_path, right=df_from, how="inner", left_index=True, right_index=True
)

df = pd.concat(
    [df.apply(lambda x: x[x[col]], axis=1) for col in df_path.columns], axis=1
)
print(df)
# Output
                                0         1         2         3         4
2017-04-05 10:35:03.740 -1.474314  0.318631  0.178816  1.333643  1.097234
2017-04-07 09:41:11.167 -0.480329  0.575849  1.855999  0.815211 -0.126898
2017-09-11 09:30:40.390  0.618520 -1.307552  1.254301  0.222409  0.962458

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM