【问题标题】:Extracting an element from list embedded in column从嵌入在列中的列表中提取元素
【发布时间】:2019-11-17 11:16:02
【问题描述】:

我有以下数据框:

col1   col2
[12, 2]  4
[2, 5]  3

我想要这个:

col1A   col1B   col2
12        2       4
2        5       3

这个问题类似于this,但在做df['col1'].str[0] 时,我得到了这个输出:

col1   col2
[       4
[       3

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    用途:

    new_df=df.T.apply(lambda x: x.explode()).T
    print(new_df)
      col1 col1 col2
    0   12    2    4
    1    2    5    3
    

    如果要重命名列,请使用:

    df2=df.T.apply(lambda x: x.explode())
    groups=df2.groupby(level=0)
    letters=groups.cumcount().map({0:'A',1:'B'})
    df2.index=(df2.index+letters).where(groups.size()>1,df2.index.to_series())
    new_df=df2.T
    print(new_df)
    
      col1A col1B col2
    0    12     2    4
    1     2     5    3
    

    【讨论】:

    • 感谢您的回答。但是,该解决方案不适用于我的情况。 new_df 与 df 相同。我尝试初始化另一个虚拟数据框并且您的解决方案有效。不确定问题出在哪里。从 csv 读取数据的方式有问题吗?
    • @user2991421 请分享所有相关代码和数据。请参阅:minimal reproducible example
    • 如果此代码适用于示例但不适用于您的csv文件,则可能是您打开文件的方式问题,与此问题无关。所以我认为答案还是正确的
    【解决方案2】:

    我会的

    df=pd.DataFrame(df.pop('col1').tolist(),index=df.index).join(df)
    Out[41]: 
        0   1  col2
    0   1   2     1
    1  10  11     2
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-04
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-28
      • 2016-07-02
      • 1970-01-01
      相关资源
      最近更新 更多