【问题标题】: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)”

标签: python-3.x pandas list dataframe multiple-columns


【解决方案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 你是正确的那个场景这个解决方案不好
猜你喜欢
  • 1970-01-01
  • 2019-10-12
  • 2022-11-23
  • 2016-09-25
  • 2022-01-19
  • 1970-01-01
  • 2019-07-14
  • 1970-01-01
  • 2019-08-04
相关资源
最近更新 更多