【问题标题】:How to extend a list inside a pandas dataframe如何在熊猫数据框中扩展列表
【发布时间】:2022-01-03 21:19:26
【问题描述】:

我有一个 pandas 数据框,其中一列的每个元素都是一个列表。 然后我有一个列表,其元素数量与熊猫数据框中的行相同;我想用这个新列表来扩展 pandas 中的列表。

例如,如果这是数据框。

my_column
[1, 2]
[3, 4]
df = pd.DataFrame({'my_column':[[1, 2], [3, 4]]})

这是外部列表

external_list = [[5, 6], [7, 8, 9]]

我想扩展数据框的每一个列表,所以最终的结果是:

my_column
[1, 2, 5, 6]
[3, 4, 7, 8, 9]

目前,我拥有的是:

for index, row in data.iterrows():
    df["my_column"].loc[index] = row["my_column"].extend(external_list[index])

有没有更pythonic的方式?

【问题讨论】:

    标签: python pandas list


    【解决方案1】:
    df = pd.DataFrame({'my_column':[[1, 2], [3, 4]]})
    lst = [[5, 6], [7, 8, 9]]
    

    一种方式:

    df['my_column'] += pd.Series(lst) 
    

    另一种方式:您可以zip 列值与列表值并使用列表理解:

    df['my_column'] = [l1 + l2 for l1, l2 in zip(df['my_column'].tolist(), lst)]
    

    输出:

             my_column
    0     [1, 2, 5, 6]
    1  [3, 4, 7, 8, 9]
    

    【讨论】:

      【解决方案2】:

      我不确定它是否足够 Pythonic,但你可以这样做:

      data = {"my_column":[[1, 2], [3, 4]]}
      df = pd.DataFrame(data)
      
      list2 = [[5, 6], [7, 8, 9]]
      
      df["my_column"] = [list1 + list2[i] for i, list1 in df["my_column"].iteritems()]
      

      【讨论】:

        猜你喜欢
        • 2018-01-07
        • 1970-01-01
        • 2020-09-01
        • 1970-01-01
        • 2021-12-20
        • 2017-07-29
        • 2021-08-19
        • 2021-06-13
        • 1970-01-01
        相关资源
        最近更新 更多