我有一个名为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 )"
答案 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而不是元组更为重要。