【问题标题】:Pandas Get First Element of Each Tuple in CellPandas 获取单元格中每个元组的第一个元素
【发布时间】:2016-07-12 16:30:40
【问题描述】:

给定以下数据框:

import pandas as pd
df=pd.DataFrame({'A':['a','b','c'],
                 'B':[[[1,2],[3,4],[5,6]],[[1,2],[3,4],[5,6]],[[1,2],[3,4],[5,6]]]})
df

    A               B
0   a   [[1, 2], [3, 4], [5, 6]]
1   b   [[1, 2], [3, 4], [5, 6]]
2   c   [[1, 2], [3, 4], [5, 6]]

我想创建一个新列 ('C'),其中包含 B 列元组的每个元素中的第一个值,如下所示:

    A               B                 C
0   a   [[1, 2], [3, 4], [5, 6]]   [1,3,5]
1   b   [[1, 2], [3, 4], [5, 6]]   [1,3,5]
2   c   [[1, 2], [3, 4], [5, 6]]   [1,3,5]

到目前为止,我已经尝试过:

df['C']=df['B'][0]

...但是只返回第一个元组 ([1, 2])。

提前致谢!

【问题讨论】:

  • 不会df['B'].apply(lambda x: [e[0] for e in x]) 工作?好的,只需重新阅读,查看更新的评论
  • 是的,确实如此。您要发布作为答案吗?
  • 不需要阿尔贝托的回答就是我会发布的

标签: python-3.x pandas tuples


【解决方案1】:
df['C'] = df['B'].apply(lambda x: [y[0] for y in x])

【讨论】:

    【解决方案2】:

    这对我有用 -

    df['C'] = df['B'].str[0]
    

    【讨论】:

      【解决方案3】:

      试试这个:

      df['C'] =   df["B"].apply(lambda x : [y[0] for y in list(x)])
      

      【讨论】:

        猜你喜欢
        • 2022-01-22
        • 2019-05-20
        • 2021-05-26
        • 1970-01-01
        • 1970-01-01
        • 2021-11-12
        • 2019-04-19
        • 2021-10-05
        • 2014-04-20
        相关资源
        最近更新 更多