【问题标题】:Transpose pandas dataframe转置熊猫数据框
【发布时间】:2022-12-16 15:00:54
【问题描述】:

如何将列表列表转换为熊猫数据框?

它不是列的形式,而是行的形式。

#!/usr/bin/env python

from random import randrange
import pandas

data = [[[randrange(0,100) for j in range(0, 12)] for y in range(0, 12)] for x in range(0, 5)]
print data
df = pandas.DataFrame(data[0], columns=['B','P','F','I','FP','BP','2','M','3','1','I','L'])
print df

例如:

data[0][0] == [64, 73, 76, 64, 61, 32, 36, 94, 81, 49, 94, 48]

我希望它显示为行而不是列。

目前它显示这样的东西

     B   P   F   I  FP  BP   2   M   3   1   I   L
0   64  73  76  64  61  32  36  94  81  49  94  48
1   57  58  69  46  34  66  15  24  20  49  25  98
2   99  61  73  69  21  33  78  31  16  11  77  71
3   41   1  55  34  97  64  98   9  42  77  95  41
4   36  50  54  27  74   0   8  59  27  54   6  90
5   74  72  75  30  62  42  90  26  13  49  74   9
6   41  92  11  38  24  48  34  74  50  10  42   9
7   77   9  77  63  23   5  50  66  49   5  66  98
8   90  66  97  16  39  55  38   4  33  52  64   5
9   18  14  62  87  54  38  29  10  66  18  15  86
10  60  89  57  28  18  68  11  29  94  34  37  59
11  78  67  93  18  14  28  64  11  77  79  94  66

我想要切换行和列。此外,如何为所有 5 个主要列表制作它?

这就是我希望输出看起来像其他列也已填充的方式。

     B   P   F   I  FP  BP   2   M   3   1   I   L
0    64 
1    73  
1    76  
2    64  
3    61  
4    32  
5    36  
6    94  
7    81  
8    49  
9    94  
10   48

然而。 df.transpose() 帮不上忙。

【问题讨论】:

  • transpose() 似乎没有帮助。重建索引也没有。

标签: python pandas dataframe


【解决方案1】:

这是我想出的

data = [[[randrange(0,100) for j in range(0, 12)] for y in range(0, 12)] for x in range(0, 5)]
print data
df = pandas.DataFrame(data[0], columns=['B','P','F','I','FP','BP','2','M','3','1','I','L'])
print df
df1 = df.transpose()
df1.columns = ['B','P','F','I','FP','BP','2','M','3','1','I','L']
print df1

【讨论】:

    【解决方案2】:
    import numpy
    
    df = pandas.DataFrame(numpy.asarray(data[x]).T.tolist(),
                          columns=['B','P','F','I','FP','BP','2','M','3','1','I','L'])
    

    【讨论】:

    • 相同的想法,但写成 df1 = pd.DataFrame(df.values.T, columns=df.columns) 可能更简洁一些?
    • 但是你将如何为列表列表做呢?
    • 你想处理所有 5 个吗?: for x in range(len(data)): df=... append each to a list, or whatever you want to do with it
    • df.T 的语法记录在哪里?我只能找到这个页面:pandas.pydata.org/pandas-docs/stable/generated/…
    • 在这里工作。原文(需要转置):x = pd.DataFrame([a,b,c,d])。固定:x = pd.DataFrame(np.asarray([a,b,c,d]).T.tolist())
    猜你喜欢
    • 1970-01-01
    • 2018-05-11
    • 2020-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-14
    • 2021-10-28
    相关资源
    最近更新 更多