我正在使用 PySpark Python3 - Spark 2.1.0 并且我有一个不同列表的列表,例如:
lista_archivos = [[['FILE','123.xml'],['NAME','ANA'],['SURNAME','LÓPEZ'],
['BIRTHDATE','05-05-2000'],['NATIONALITY','ESP']], [['FILE','458.xml'],
['NAME','JUAN'],['SURNAME','PÉREZ'],['NATIONALITY','ESP']], [['FILE','789.xml'],
['NAME','PEDRO'],['SURNAME','CASTRO'],['BIRTHDATE','07-07-2007'],['NATIONALITY','ESP']]]
这个列表有不同长度的元素。所以现在,我想从此列表中创建一个 DataFrame,其中列是第一个属性(即“FILE、NAME、SURNAME、BIRTHDATE、NATIONALITY”),数据是第二个属性。
如您所见,第二个列表没有“BIRTHDATE”列,我需要 DataFrame 在此位置创建带有 NaN 或空格的列。
此外,我需要 DataFrame 是这样的:
FILE NAME SURNAME BIRTHDATE NATIONALITY
----------------------------------------------------
123.xml ANA LÓPEZ 05-05-2000 ESP
458.xml JUAN PÉREZ NaN ESP
789.xml PEDRO CASTRO 07-07-2007 ESP
列表的数据必须在同一列中。
我已经完成了这段代码,但它看起来不像我想要的表格:
dictOfWords = { i : lista_archivos[i] for i in range(0, len(lista_archivos) ) }
d = dictOfWords
tabla = pd.DataFrame(dict([ (k,pd.Series(v)) for k,v in dictOfWords.items() ]))
tabla_final = tabla.transpose()
tabla_final
此外,我已经这样做了:
dictOfWords = { i : lista_archivos[i] for i in range(0, len(lista_archivos) ) }
print(dictOfWords)
tabla = pd.DataFrame.from_dict(dictOfWords, orient='index')
tabla
结果并不好。
如果可能的话,我想要一个 pandas DataFrame 和一个 Spark DataFrame。
谢谢!!
最佳答案
以下应该适用于您的情况:
In [5]: lista_archivos = [[['FILE','123.xml'],['NAME','ANA'],['SURNAME','LÓPEZ'],
...: ['BIRTHDATE','05-05-2000'],['NATIONALITY','ESP']], [['FILE','458.xml'],
...: ['NAME','JUAN'],['SURNAME','PÉREZ'],['NATIONALITY','ESP']], [['FILE','789.xml'],
...: ['NAME','PEDRO'],['SURNAME','CASTRO'],['BIRTHDATE','07-07-2007'],['NATIONALITY','ESP']]]
In [6]: pd.DataFrame(list(map(dict, lista_archivos)))
Out[6]:
BIRTHDATE FILE NAME NATIONALITY SURNAME
0 05-05-2000 123.xml ANA ESP LÓPEZ
1 NaN 458.xml JUAN ESP PÉREZ
2 07-07-2007 789.xml PEDRO ESP CASTRO
本质上,您将子列表转换为 dict
对象,并将这些列表提供给数据框构造函数。数据框构造函数非常自然地与字典列表一起工作。
关于python - 如何从 Python 中具有不同长度的列表列表创建数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53378873/