python - 从数据框中包含的列表中将列动态添加到 pandas 数据框
问题描述
我有一个数据框,其中第一列包含一个随机大小的列表,每个列表中从 0 到大约 10 个项目。此数据框还包含其他几列数据。
我想插入与最长列表的长度一样多的列,然后按顺序填充这些值,以便每一列在第一列的列表中都有一个项目。
我不确定解决这个问题的好方法。
sample = [[[0,2,3,7,8,9],2,3,4,5],[[1,2],2,3,4,5],[[1,3,4,5,6,7,8,9,0],2,3,4,5]]
headers = ["col1","col2","col3","col4","col5"]
df = pd.DataFrame(sample, columns = headers)
在此示例中,我想在第 1 列之后添加 9 列,因为这是数据帧第三行中列表的最大长度。这些列将填充:
0 2 3 7 8 9 NULL NULL NULL in the first row,
1 2 NULL NULL NULL NULL NULL NULL NULL in the second, etc...
解决方案
编辑以适应 OP 编辑
我就是这样做的。首先,我将填充原始列的列表,使它们的长度都相同,并且更容易使用它们。之后就是创建列并用与列表中的位置对应的值填充它。假设我们的列表最大为 4 以作为一个更简单的示例:
df = pd.DataFrame(sample, columns = headers)
df = df.rename(columns={'col1':'col_of_lists'})
max_length = max(df['col_of_lists'].apply(lambda x:len(x)))
df['col_of_lists'] = df['col_of_lists'].apply(lambda x:x + ([np.nan] * (max_length - len(x))))
for i in range(max_length):
df['col_'+str(i)] = df['col_of_lists'].apply(lambda x: x[i])
推荐阅读
- c++ - 包含 intrin.h 时出错?
- javascript - 电子邮件链接如何在前端工作?
- c# - 它是在 SQL Server 表中保存 800 多个控件属性的好方法吗?在线共享控件属性
- python - TypeError:字符串索引必须是整数。蟒蛇,烧瓶
- spring-boot - Spring Boot + JPA (Hibernate) - 如何更新一些字段
- java - Java查询中的多线程
- python - 检测是否有3个相同的字母彼此相邻
- python - 我可以使用外部程序在谷歌表格中运行自定义脚本吗?
- swift - Type() -> Int 不能符合 BinaryInteger
- javascript - Django jsonresponse 更新表格让屏幕像打开一个模态一样变黑;不能关闭它