【问题标题】:appending to lists in column of dataframe附加到数据框列中的列表
【发布时间】:2021-05-01 06:12:54
【问题描述】:

我在包含字符串列表的数据框中有一列:

id    colname
1     ['str1', 'str2', 'str3']
2     ['str3', 'str4']
3     ['str3']
4     ['str2', 'str5', 'str6']
..

如您所见,列表中的字符串有些重叠。 我想在此列中的列表附加一个值,例如“strX”。最终结果应该是:

id    colname
1     ['str1', 'str2', 'str3', 'strX']
2     ['str3', 'str4', 'strX']
3     ['str3', 'strX']
4     ['str2', 'str5', 'str6', 'strX']
..

实现这一目标的正确方法是什么?我已经尝试追加和添加,但这些并没有得到我想要的结果。

【问题讨论】:

    标签: python pandas list dataframe append


    【解决方案1】:

    您可以在Series.mapSeries.apply添加列表:

    df['colname'] = df['colname'].map(lambda x: x + ['strX'])
    #alternative
    #df['colname'] = df['colname'].apply(lambda x: x + ['strX'])
    #or in list comprehension
    #df['colname'] = [x + ['strX']  for x in df['colname']]
    print (df)
       id                   colname
    0   1  [str1, str2, str3, strX]
    1   2        [str3, str4, strX]
    2   3              [str3, strX]
    3   4  [str2, str5, str6, strX]
    

    【讨论】:

      【解决方案2】:

      因此,如果您想将“strx”附加到您可以做的所有事情中,就像@jezrael 指出的那样:

      df = pd.DataFrame({"1": [[1,2,3], [3,4,5,6]]}, index=[1,2])
      print(df)
                    1
      1     [1, 2, 3]
      2  [3, 4, 5, 6]
      
      df.apply(lambda x: x["1"].append('strx'), axis=1)
      print(df)
                          1
      1     [1, 2, 3, strx]
      2  [3, 4, 5, 6, strx]
      

      但是,如果您想根据索引添加不同的值,您也可以! 让我们采用相同的 df,但使用精确的 dict 添加什么

      dico = {1: "strx", 2: "strj"}
      df.apply(lambda x: x["1"].append(dico[x.name]), axis=1)
      print(df)
                          1
      1     [1, 2, 3, strx]
      2  [3, 4, 5, 6, strj]
      

      【讨论】:

        猜你喜欢
        • 2021-02-06
        • 2019-09-08
        • 2019-10-12
        • 2022-01-17
        • 2020-05-21
        • 2012-09-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多