python - 如何从 Python 中具有不同长度的列表列表创建数据框?

标签 python python-3.x pandas pyspark

我正在使用 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/

相关文章:

python - 在 Python2.6+ 中为 Solaris 创建 netstat 的实现

python - 如何在 Python 中比较两个 CSV 文件?

python - 关于Python中的time.time()

python - 用于确定使用了哪个参数解包(位置或关键字)的内省(introspection)函数

python - 使用列表作为值保存和加载 Pandas 数据框时不一致

python - Python 3 中的泊松点过程与 numpy,没有 scipy

python - 不使用 shell-True 提取帧数

python - 如何在非 python travis 配置中使用 python 3 作为构建脚本?

python - Python 中每个用户的排名

python - 用计算向前填充 DataFrame/数组的更好方法?