python - 来自 csv 的数据透视并存储在数据框中

标签 python pandas csv dataframe data-science

我有一个要求:

我有一个包含以下数据的 csv 文件(这只是示例,数据要大得多):

xxxx|A|B|C|D|E
xxxx|P|Q|R|S|T
DATE|L|M|N|O|P
01/02/1997|12|4|5|0|0
01/03/1998|71|2|4|8|0

我想将数据保存在数据框中,以便列应该是:

 A   01/02/1997   P   L  12
 B   01/02/1997   Q   M   4
 C   01/02/1997   R   N   5
 D   01/02/1997   S   O   0
 E   01/02/1997   T   P   0
 A   01/03/1998   P   L  71
 B   01/03/1998   Q   M   2
 C   01/03/1998   R   N   4
 D   01/03/1998   S   O   8
 E   01/03/1998   T   P   0 

基本上第一列应该旋转。有人可以帮忙吗?名称和数据只是示例(虚拟)

最佳答案

首先创建MultiIndex in columns通过header=[0,1,2]参数并将第一列转换为索引 index_col=[0] read_csv :

df = pd.read_csv(filename, sep="|", header=[0,1,2], index_col=[0])
print (df)
xxxx         A  B  C  D  E
xxxx         P  Q  R  S  T
DATE         L  M  N  O  P
01/02/1997  12  4  5  0  0
01/03/1998  71  2  4  8  0

详细信息:

print (df.columns)
MultiIndex([('A', 'P', 'L'),
            ('B', 'Q', 'M'),
            ('C', 'R', 'N'),
            ('D', 'S', 'O'),
            ('E', 'T', 'P')],
           names=['xxxx', 'xxxx', 'DATE'])

然后转置为 DataFrame.T , reshape DataFrame.stack ,排序依据 DataFrame.sort_index ,通过 DataFrame.rename_axis 为MultiIndex创建标签最后转换MultiIndex SeriesDataFrame通过 Series.reset_index :

df1 = (df.T
         .stack(dropna=False)
         .sort_index(level=3)
         .rename_axis(('a','b','c','d'))
         .reset_index(name='e'))
print (df1)
   a  b  c           d   e
0  A  P  L  01/02/1997  12
1  B  Q  M  01/02/1997   4
2  C  R  N  01/02/1997   5
3  D  S  O  01/02/1997   0
4  E  T  P  01/02/1997   0
5  A  P  L  01/03/1998  71
6  B  Q  M  01/03/1998   2
7  C  R  N  01/03/1998   4
8  D  S  O  01/03/1998   8
9  E  T  P  01/03/1998   0

关于python - 来自 csv 的数据透视并存储在数据框中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60370331/

相关文章:

python - 如何解决此问题元素不可交互的 Selenium Python

python - os.path.getmtime() 不返回几分之一秒

python - 使用 Psycopg2 与 Redshift 的 SSL 连接

python - Pandas 时区感知索引在转换为系列时会降低时区

python - 无法使用 pandas 合并两个数据框

python - 读取 csv 文件时删除空白行

python - 是否有内置的 Python/pandas 函数来重命名 pandas.DataFrame 中的重复列?

python - Pandas : Reading first n rows from parquet file?

python - 编写 CSV 以存储在 Google Cloud Storage 中

linux - 显示.im6 : no decode delegate for this image format `/tmp/magick-KFcbfWUi'