Python 将行数据转换为分组数据

Python 将行数据转换为分组数据,python,python-3.x,database,sas,Python,Python 3.x,Database,Sas,我有一个关于转换数据的问题 如果我的数据如下所示: Variable A 130 130 130 Variable B 56 57 58 Variable C 1100 1200 1300 在文本文件中,我想将其转换为如下内容: Variable A Variable B Variable C 130 56 1100 130 57 1200 130 58 1300

我有一个关于转换数据的问题

如果我的数据如下所示:

Variable A  
130  
130  
130 

Variable B  
56  
57  
58  

Variable C  
1100    
1200  
1300
在文本文件中,我想将其转换为如下内容:

Variable A     Variable B    Variable C  
130            56            1100  
130  57   1200  
130  58  1300

我该怎么办

您的数据是以列为中心的,而SAS数据集是以行为中心的,因此在某些时候需要一个数据透视

最通用的流程是:

  • 将数据输入到名称:值对的多行中
    • 计算每对的序列值(行号)
  • 对输入进行排序
  • 按行转置
假设所有数据都是数字,下面是一个示例:

* construct a demonstration input data file;
* every data value in this construction is via +1 to allow
* examination of the reshaping;

filename havedata temp;

data _null_;
  file havedata;

  call streaminit(123);

  do varname = 'A', 'B', 'C', 'D', 'X', 'Y', 'Z';
    put 'Variable ' varname;
    do _n_ = 1 to 100 + rand('uniform',20);
      value + 1; 
      put value;        
    end;
  end;
run;

* read the demo file;

data want_input;
  infile havedata;

  length rownumber 8 name $32 value 8;
  retain name;

  input @;

  if _infile_ =: 'Variable' then do;                /* detect variable landmark in data file */
    rownumber = 0;
    name = substr(_infile_, length('Variable')+1);  
    delete;
  end;

  rownumber + 1;
  input @1 value;
run;

proc sort data=want_input;
  by rownumber name;
run;

proc transpose data=want_input out=want(drop=_name_ rownumber);
  by rownumber;
  id name;
  var value;
run;

如果数据文件变量“blocks”是字符或日期表示形式,事情将更加复杂。

这取决于。。它们是每个变量的单独文本文件,还是一个由空行分隔的文件?查看pandas和从文本文件加载数据的
read_table
函数,这在很大程度上取决于这些文件是多个文件还是单个文件\