Python pd.DataFrame返回值错误:数组必须在相同范围内

时间:2020-10-12 14:05:26

标签: python pandas

    list1 = ['Name','Class','ID','Phone','address','height','weight','number','Father','Mother','Sibling','Sibling2',
   'Sibling3','Email']
    list2[0] = [' Jason  4B                                 KB123  9999   US  150 113 6 Paul    Mary                                                              Andy                                                              Charles                                                               - a@xx.com ',
   ' Annie  4C                                 KB345  9991   US  163 119 2 Chen    White                                                              Bob                                                              Cyrus                                                               Ken b@xx.com ',
...
...

由于我在线抓取数据,并且使用.remove删除了文本之间的一些\n,所以列表很混乱,但是我确定如果将list1放在excel row1上,数字list2中的所有键都可以满足上述要求,因为如果学生没有3个同级,则会出现“-”。

如何使用熊猫对这些原始列表进行排序并发送到csv?非常感谢。

了解更多信息 我尝试使用list2[0]检查元素,它返回

' Jason 4B KB123 9999 US 150 113 6 Paul Mary Andy Charles - a@xx.com '

并且我尝试使用list2[0] = [x.strip('') for x in list2[0]]

当我调用list2 [0]时,它将显示

['Jason', '', '4B', '', '', '', '', '', '', '', '', '', ...

已经找不到解决此问题的方法。有人可以帮忙吗

1 个答案:

答案 0 :(得分:0)

您可以使用正则表达式整理列表2

import pandas as pd
import re

list1 = ['Name','Class','ID','Phone','address','height','weight','number','Father','Mother','Sibling','Sibling2',
   'Sibling3','Email']
list2 = [' Jason  4B                                 KB123  9999   US  150 113 6 Paul    Mary                                                              Andy                                                              Charles                                                               - a@xx.com ',
   ' Annie  4C                                 KB345  9991   US  163 119 2 Chen    White                                                              Bob                                                              Cyrus                                                               Ken b@xx.com ']

df = pd.DataFrame([re.findall(r"[\S]+", item) for item in list2])
df

out

然后将list1添加为列

df.columns = list1
df

out