如何将包含列表的列转换为熊猫数据框中的单独列? [复制]
Posted
技术标签:
【中文标题】如何将包含列表的列转换为熊猫数据框中的单独列? [复制]【英文标题】:How to convert a column containing list into separate column in pandas data-frame? [duplicate] 【发布时间】:2019-11-29 14:53:09 【问题描述】:我有一个数据框,其中一列包含一个列表。
A B
0 5 [3, 4]
1 4 [1, 1]
2 1 [7, 7]
3 3 [0, 2]
4 5 [3, 3]
5 4 [2, 2]
输出应如下所示:
A x y
0 5 3 4
1 4 1 1
2 1 7 7
3 3 0 2
4 5 3 3
5 4 2 2
我已经尝试了这些我发现 here 的选项,但它不起作用。
【问题讨论】:
df[['A']].join(pd.DataFrame(df.B.values.tolist(),columns=['x','y'],index=df.index))
相同的解决方案适用于我。如果不是,请编辑问题并提供更多详细信息
不,它给出了这个错误:“传递值的形状是 (1, 14316),索引意味着 (2, 14316)”
【参考方案1】:
df = pd.DataFrame(data="A":[0,1],
"B":[[3,4],[1,1]])
df['x'] = df['B'].apply(lambda x:x[0])
df['y'] = df['B'].apply(lambda x:x[1])
df.drop(['B'],axis=1,inplace=True)
A x y
0 0 3 4
1 1 1 1
如果列表存储为字符串
from ast import literal_eval
df = pd.DataFrame(data="A":[0,1],
"B":['[3,4]','[1,1]'])
df['x'] = df['B'].apply(lambda x:literal_eval(x)[0])
df['y'] = df['B'].apply(lambda x:literal_eval(x)[1])
df.drop(['B'],axis=1,inplace=True)
第三种方式归功于@anky_91
df = pd.DataFrame(data="A":[0,1],
"B":['[3,4]','[1,1]'])
df["B"] = df["B"].apply(lambda x :literal_eval(x))
df[['A']].join(pd.DataFrame(df["B"].values.tolist(),columns=['x','y'],index=df.index))
df.drop(["B"],axis=1,inplace=True)
【讨论】:
抱歉没用! 什么是错误? 它在“X”列中给出“[”而不是列表项 @astroluv 您的列表存储为字符串检查解决方案 2 @anky_91 你是正确的那个场景这个解决方案不好以上是关于如何将包含列表的列转换为熊猫数据框中的单独列? [复制]的主要内容,如果未能解决你的问题,请参考以下文章