python – 如何最好地将包含列表或元组的Pandas列提取到多个列中
发布时间:2020-12-20 12:13:42 所属栏目:Python 来源:网络整理
导读:参见英文答案 How to expand one column in Pandas to many columns?????????????????????????????????????3个 ???????????? Pandas split column of lists into multiple columns????????????????????????????????????3个 我不小心用一个错误复制的链接关闭
参见英文答案 >
How to expand one column in Pandas to many columns?????????????????????????????????????3个
>???????????? Pandas split column of lists into multiple columns????????????????????????????????????3个 我不小心用一个错误复制的链接关闭了这个问题.这是正确的: Pandas split column of lists into multiple columns. 假设我有一个数据框,其中一列是一个列表(已知和相同长度)或元组,例如: df1 = pd.DataFrame( {'vals': [['a','b','c','d'],['e','f','g','h']]} ) 即: vals 0 [a,b,c,d] 1 [e,f,g,h] 我想将“vals”中的值添加到单独的命名列中.我可以通过遍历行来笨拙地做到这一点: for i in range(df1.shape[0]): for j in range(0,4): df1.loc[i,'vals_'+j] = df1.loc[i,'vals'] [j] 结果符合要求: vals vals_0 vals_1 vals_2 vals_3 0 [a,d] a b c d 1 [e,h] e f g h 有更整洁(矢量化)的方式吗?我尝试使用[]但是我收到了一个错误. for j in range (0,4) df1['vals_'+str(j)] = df1['vals'][j] 得到: ValueError: Length of values does not match length of index 看起来Pandas试图将[]运算符应用于系列/数据帧而不是列内容. 解决方法
您可以使用assign,apply和pd.Series:
df1.assign(**df1.vals.apply(pd.Series).add_prefix('val_')) 更快的数据方法是使用.values和tolist()与数据帧构造函数: df1.assign(**pd.DataFrame(df1.vals.values.tolist()).add_prefix('val_')) 输出: vals val_0 val_1 val_2 val_3 0 [a,d] a b c d 1 [e,h] e f g h (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |