将pandas数据框中的某些列转换为列表列表

2024-06-26 18:02:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个dataframe。我想把一些数据转换成一个列表。我感兴趣的列是indexNameBirths。我的代码可以工作,但是它看起来效率很低,而且出于某种原因,字母L被添加到每个索引的末尾。

我的代码:

import pandas as pd


data = [['Bob', 968, 'Male'], ['Jessica', 341, 'Female'], ['Mary', 77, 'Female'], ['John', 578, 'Male'], ['Mel', 434, 'Female']]
headers = ['Names', 'Births', 'Gender']
df = pd.DataFrame(data = data, columns=headers)
indexes = df.index.values.tolist()
mylist =  [[x] for x in indexes]

for x in mylist:
    x.extend([df.ix[x[0],'Names'], df.ix[x[0],'Births']])

print mylist

期望输出:

[[0, 'Bob', 968], [1, 'Jessica', 341], [2, 'Mary', 77], [3, 'John', 578], [4, 'Mel', 434]]

Tags: 代码dfdataindexjohnmalefemaleheaders
2条回答

为什么不像你提到的那样使用.values.tolist()

import pandas as pd

# your data
# =================================================
data = [['Bob', 968, 'Male'], ['Jessica', 341, 'Female'], ['Mary', 77, 'Female'], ['John', 578, 'Male'], ['Mel', 434, 'Female']]
headers = ['Names', 'Births', 'Gender']
df = pd.DataFrame(data = data, columns=headers)

# nested list
# ============================
df.reset_index()[['index', 'Names', 'Births']].values.tolist()

Out[46]: 
[[0, 'Bob', 968],
 [1, 'Jessica', 341],
 [2, 'Mary', 77],
 [3, 'John', 578],
 [4, 'Mel', 434]]

好吧,这本书(根据李建勋的回答和评论):

import pandas as pd

# Data
data = [['Bob', 968, 'Male'], ['Jessica', 341, 'Female'], ['Mary', 77, 'Female'], ['John', 578, 'Male'], ['Mel', 434, 'Female']]
headers = ['Names', 'Births', 'Gender']
df = pd.DataFrame(data = data, columns=headers)

# Output
print df.reset_index()[['index', 'Names', 'Births']].values.astype(str).tolist()

谢谢李建勋,这也帮助了我:-)

通常,可以使用以下方法将完整的数据帧转换为列表列表(这正是我所需要的):

df.values.astype(str).tolist()

相关问题 更多 >