如何从元组创建Pandas数据框

时间:2018-02-19 15:16:25

标签: python pandas dataframe

我有一个名为a的元组,有10列。示例数据看起来像

((12, '22', '32'),
Column-1    Column-2    Column-3    colum-4 Column-5    Colum-6 Colum-7 Week    ACCT_YEAR   NAME
12  22  32  …   …   …   …   51  2016    Name-1
12  22  32  …   …   …   …   51  2016    Name-2
12  22  32  …   …   …   …   51  2016    Name-3
12  22  32  …   …   …   …   51  2016    Name-4
12  22  32  …   …   …   …   51  2016    Name-5
12  22  32  …   …   …   …   51  2016    Name-6
12  22  32  …   …   …   …   52  2016    Name-7
12  22  32  …   …   …   …   52  2016    Name-8
12  22  32  …   …   …   …   52  2016    Name-9
12  22  32  …   …   …   …   52  2016    Name-10
12  22  32  …   …   …   …   52  2016    Name-11
12  22  32  …   …   …   …   52  2016    Name-12
12  22  32  …   …   …   …   52  2016    Name-13
12  22  32  …   …   …   …   52  2016    Name-14)

我想将其转换为pandas数据框。所以我使用了以下代码

y=pd.DataFrame(list(a))

但是y.shape [0]显示2&在打印y之后,我看到它包含2行,其中第二行是列标题&第一行包含一些列的数据&对于其他列也没有,它的列数多于我的元组。你能否告诉我如何在python 3.6中正确地做到这一点

repr ()的输出在下面给出

((12, '22', '32'),       Column-1 Column-2 Column-3        Column-4 Column-5  \\\n1101         12      22         32  ...         ...   \n1102         12      22         32  ...         ...   \n1103         12      22         32  ...          ...   \n1104         12      22         32  ...          ...   \n1105         12      22         32  ...          ...   \n1106         12      22         32  ...          ...   \n1107         12      22         32  ...          ...   \n1108         12      22         32  ...          ...   \n1109         12      22         32  ...          ...   \n1110         12      22         32  ...          ...   \n1111         12      22         32  ...          ...   \n1112         12      22         32  ...          ...   \n1113         12      22         32  ...          ...   \n1114         12      22         32  ...          ...   \n1115         12      22         32  ...          ...   \n1116         12      22         32  ...          ...   \n1117         12      22         32  ...          ...   \n1118         12      22         32  ...          ...   \n1119         12      22         32  ...          ...   \n1120         12      22         32  ...          ...   \n1121         12      22         32  ...          ...   \n1122         12      22         32  ...          ...   \n1123         12      22         32  ...          ...   \n1124         12      22         32  ...          ...   \n1125         12      22         32  ...          ...   \n1126         12      22         32  ...          ...   \n1127         12      22         32  ...          ...   \n1128         12      22         32  ...          ...   \n\n     Column-6           Column-7   W20162016k 51CC51_Y201651R   \\\n1101   ...  ...  515151P325151M51            2016   \n1102   ...       ...           51            51   \n1103   ...        ...      0000453            2016   \n1104   ...        ...      0000512            2016   \n1105   ...      ...            51            51   \n1106   ...      ...            51            51   \n1107   ...      ...            51            51   \n1108   ...       ...           51            51   \n1109   ...        ...      0000561            2016   \n1110   ...        ...      0000871            2016   \n1111   ...      ...            51            51   \n1112   ...      ...            51            51   \n1113   ...      ...            51            51   \n1114   ...       ...           C51            51   \n1115   ...        ...      0000604            51   \n1116   ...      ...            51            51   \n1117   ...      ...            51            51   \n1118   ...       ...           511            51   \n1119   ...       ...           51            51   \n1120   ...       ...           51            51   \n1121   ...       ...           51            51   \n1122   ...       ...           51            51   \n1123   ...       ...           51            51   \n1124   ...       ...           51            51   \n1125   ...       ...           51            51   \n1126   ...       ...           51            51   \n1127   ...       ...           51            51   \n1128   ...       ...           5151            51   \n\n     N51M2016  \n1101                     C  \n1102                     C  \n1103                     C  \n1104                     C  \n1105                     C  \n1106                     C  \n1107                     C  \n1108                     C  \n1109                     C  \n1110                     C  \n1111                     C  \n1112                     C  \n1113                     C  \n1114                     C  \n1115                     C  \n1116                     C  \n1117                     C  \n1118                     C  \n1119                     C  \n1120                     C  \n1121                     C  \n1122                     C  \n1123                     C  \n1124                     C  \n1125                     C  \n1126                     C  \n1127                     C  \n1128                     C  )"

1 个答案:

答案 0 :(得分:0)

答案很大程度上取决于元组中的String。如果您复制的内容实际上是字符串中的内容,则必须将字符串转换为pandas可以解析的内容,这就是我添加正则表达式替换的原因。

import pandas as pd
import io
import re
a = (('12','22','32'),
     """Column-1    Column-2    Column-3    colum-4 Column-5    Colum-6 Colum-7 Week    ACCT_YEAR   NAME
12  22  32  …   …   …   …   51  2016    Name-1
12  22  32  …   …   …   …   51  2016    Name-2
12  22  32  …   …   …   …   51  2016    Name-3""")
# The following substitution is only valid if there are absolutely no spaces in values
b = re.sub(string=a[1], pattern=' +', repl=',')
y = pd.read_csv(io.StringIO(b))
y

注意:这个答案假设元组a中的第一个值不是应该读入DataFrame的数据的一部分。这使得如何将字符串中保存的数据读入pandas.DataFrame而不是元组更为重要。