繁体   English   中英

将数据框列中的值附加到列表

[英]Append values from dataframe column to list

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

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()

要通过添加可迭代元素来扩展列表,请使用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']

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

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

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']

要访问 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) 

这个例子应该足够了:

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

输出:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM