python - 将第二层中具有不等元素的Python嵌套列表转换为数据帧

标签 python pandas dataframe merge

假设我有一个嵌套列表,第二层中的元素数量不等,例如 a=[[1,2,3],[4,5],[6,7,8,9]] 。我还有相应的包含日期变量的列表,例如 b=[['Mon','Tues','Wed'],['Mon','Wed'],['Mon','Tues','Wed ','星期四']]。我想将 ab 转换为 pandas dataframes 因为它能够接受不相等的行,然后我想组合 ab 合并到一个 dataframe 中,并对三个日期列执行 merge 以查找公共(public)日期和相应的值。但是我不确定如何将嵌套列表转换为数据帧。我尝试将它们转换为 np.array 但它无法容纳不相等的行。

最佳答案

我能想到的最好办法是将每条记录压缩到字典中,为该行创建一个单行数据帧,然后将其连接(或外连接)到前面的行。代码如下:

a = [[1,2,3],[4,5],[6,7,8,9]]
b = [['Mon','Tues','Wed'],['Mon','Wed'],['Mon','Tues','Wed','Thur']]
df = pd.DataFrame()

for row in zip(a,b):
    d = dict(zip(row[1], row[0]))
    dfrow = pd.DataFrame(d, index=[0]) #Dataframe for 1 row
    df = pd.concat([df, dfrow])

给出这个:

   Mon  Thur  Tues  Wed
0    1   NaN   2.0    3
0    4   NaN   NaN    5
0    6   9.0   7.0    8

关于python - 将第二层中具有不等元素的Python嵌套列表转换为数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38195021/

相关文章:

r - 如何在数据帧上应用分位数

r - S4 类列表到数据框

python - 防止 python 加载 pth 文件

python - 使用 timedelta 时小数位太多

python - 如何用一个值python替换多个值

python-2.7 - 将科学计数法转换为十进制 pandas python

r - 使用 grepl 创建基于另一列的列

python - 与正则表达式匹配的句子

python - 使用python进行拉格朗日乘子BFGS优化

python - 使用 Pandas Python 更改数据框中数据透视数据的数据格式