【问题标题】:Append values from dataframe column to list将数据框列中的值附加到列表
【发布时间】:2019-10-12 18:36:49
【问题描述】:

我有一个包含多列的数据框,我想将一列的值附加到一个空列表中,以便所需的输出如下:

empty_list = [value_1,value_2,value_3...]

我尝试了以下方法:

df = pd.DataFrame({'country':['a','b','c','d'],
      'gdp':[1,2,3,4],
      'iso':['x','y','z','w']})
a_list = []

a_list.append(df['iso'])
a_list.append(df['iso'].values)
a_list.append(df['iso'].tolist())

无论哪种方式,我都会得到一个包含列表、numpy 数组或序列的列表,我想直接获得记录。

【问题讨论】:

  • 所以你需要a_list = df['iso'].tolist() ?
  • 如果没有,您的示例 DataFrame 的预期输出是什么?
  • 如果你追加到一个列表,你会得到一个列表中的列表。所以,不用追加,直接得到你的列表,问题就解决了。

标签: python pandas list append


【解决方案1】:

如果您只需要附加一列,您可以试试这个脚本:

a_list = df['iso'].tolist()

要通过附加可迭代元素来扩展列表,请使用extend

a_list = []
a_list.extend(df['iso'].tolist())
a_list.extend(df['country'].tolist())
print (a_list)
['x', 'y', 'z', 'w', 'a', 'b', 'c', 'd']

另一种解决方案是将numpy.ravel 与转置一起使用:

a_list = df[['iso','country']].values.T.ravel().tolist()
print (a_list)
['x', 'y', 'z', 'w', 'a', 'b', 'c', 'd']

【讨论】:

    【解决方案2】:

    extend 满足您的要求。如果您尝试使用append 执行此操作,您可以执行以下操作:

    import itertools
    a_list = []
    a_list.append(df.iso.tolist())
    a_list.append(df.country.tolist())
    a_list=list(itertools.chain.from_iterable(a_list))
    print(a_list)
    

    输出

    ['x', 'y', 'z', 'w', 'a', 'b', 'c', 'd']
    

    【讨论】:

      【解决方案3】:

      您的问题源于df['iso'].tolist() 创建了一个列表。该列表已附加(在列表中的单个索引处给出一个位置),因此您将获得一个列表列表。你可以试试:

      a_list.extend(df['iso'].tolist())
      

      【讨论】:

        【解决方案4】:

        要访问 Pandas 数据框每一行的数据,我们可以使用 DataFrame.iat 属性,然后我们可以将每一行的数据附加到列表的末尾。 在第一个 for 循环中遍历每一行并创建一个列表来存储当前行的数据 在第二个 for 循环中遍历所有列并将每列的数据附加到列表中,然后将当前行附加到列表中

        df = pd.DataFrame({'country':['a','b','c','d'],'gdp':[1,2,3,4],'iso':['x','y','z','w']})
        a_list = []
        for i in range((df.shape[0])):
        cur_row =[]
        for j in range(df.shape[1]):
            cur_row.append(df.iat[i, j])            
        a_list.append(cur_row) 
        

        【讨论】:

        • 请编辑您的答案并添加解释以完整填写 stackoverflows 指南以获得好的答案
        【解决方案5】:

        这个例子应该够了:

        myList = df['iso'].tolist() 
        print(myList)
        

        输出:

        ['x', 'y', 'z', 'w']

        【讨论】:

        • 我需要通过循环多次附加结果,这样就行不通了。很抱歉没有在我的问题中指定它
        猜你喜欢
        • 2022-01-17
        • 2021-02-06
        • 2019-09-08
        • 2020-09-12
        • 2021-05-01
        • 2021-06-06
        • 2018-09-01
        • 2012-09-26
        • 1970-01-01
        相关资源
        最近更新 更多