我正在从尚未针对分析进行优化的PDF导入数据。

数据已导入以下数据框中

NaN   NaN   Plant_A     NaN     Plant_B      NaN
Pre   1,2   1.1         1.2         6.1      6.2
Pre   3,4   1.3         1.4         6.3      6.4
Post  1,2   2.1         2.2         7.1      7.2
Post  3,4   2.3         2.4         7.3      7.4


我想将其重组为以下形式:

            Pre_1   Pre_2   Pre_3   Pre_4  Post_1   Post_2   Post_3   Post_4
Plant_A       1.1     1.2     1.3     1.4     2.1      2.2      2.3      2.4
Plant_B       6.1     6.2     6.3     6.4     7.1      7.2      7.3      7.4


我首先用逗号分隔第二列,然后将其与第一列结合起来,例如给出Pre_1Pre_2。但是,我一直很难将其与其余各列中的数据进行匹配。例如,Pre_11.1以及Pre_21.2

任何帮助将不胜感激。

最佳答案

关于您的数据的一致性,我不得不做一些假设

from itertools import cycle
import pandas as pd

tracker = {}

for temporal, spec, *data in df.itertuples(index=False):
  data = data[::-1]
  cycle_plant = cycle(['Plant_A', 'Plant_B'])
  spec_i = spec.split(',')

  while data:
    plant = next(cycle_plant)
    for i in spec_i:
      tracker[(plant, f"{temporal}_{i}")] = data.pop()

pd.Series(tracker).unstack()

         Post_1  Post_2  Post_3  Post_4  Pre_1  Pre_2  Pre_3  Pre_4
Plant_A     2.1     2.2     2.3     2.4    1.1    1.2    1.3    1.4
Plant_B     7.1     7.2     7.3     7.4    6.1    6.2    6.3    6.4

关于python - 将Pandas DataFrame的各部分重塑为多种格式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51968584/

10-12 17:42