【问题标题】:How to Access Element of Pandas Series that is a List如何访问作为列表的 Pandas 系列元素
【发布时间】:2018-09-10 22:19:29
【问题描述】:

我有一个 Dataframe 系列,其中包含每行的字符串列表。我想创建另一个系列,它是该行列表中的最后一个字符串。

所以一行可能有一个列表,例如

['a', 'b', 'c', 'd']

我想在这个“d”中创建另一个由该行的最后一个元素组成的 pandas 系列,通常作为 -1 引用访问。每个观察(即行)的列表具有不同的长度。如何做到这一点?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    我认为需要使用str 进行索引,它适用于所有可迭代对象:

    df = pd.DataFrame({'col':[['a', 'b', 'c', 'd'],['a', 'b'],['a'], []]})
    
    df['last'] = df['col'].str[-1]
    print (df)
                col last
    0  [a, b, c, d]    d
    1        [a, b]    b
    2           [a]    a
    3            []  NaN
    

    strings 也是可迭代对象:

    df = pd.DataFrame({'col':['abcd','ab','a', '']})
    df['last'] = df['col'].str[-1]
    print (df)
        col last
    0  abcd    d
    1    ab    b
    2     a    a
    3        NaN
    

    【讨论】:

    • 非常直接,优雅地处理空列表[]或其他非列表的东西。
    【解决方案2】:

    为什么不将列表列设置为信息数据框,您可以使用索引进行连接

    Infodf=pd.DataFrame(df.col.values.tolist(),index=df.index)
    Infodf
    Out[494]: 
          0     1     2     3
    0     a     b     c     d
    1     a     b  None  None
    2     a  None  None  None
    3  None  None  None  None
    

    我想我看错了问题,PiR 和 Jez 都提供了宝贵的建议来帮助我达到最终的结果。

    Infodf.ffill(1).iloc[:,-1]
    

    【讨论】:

    • Infodf.iloc[:, -1]
    • 先填充 ;)
    猜你喜欢
    • 2019-10-10
    • 2016-10-31
    • 2014-07-24
    • 2020-05-26
    • 1970-01-01
    • 2012-05-23
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    相关资源
    最近更新 更多