Answers:
您可以访问基础数组并调用其tolist
方法:
>>> df = pd.DataFrame([[1,2,3],[3,4,5]])
>>> lol = df.values.tolist()
>>> lol
[[1L, 2L, 3L], [3L, 4L, 5L]]
df.to_numpy().tolist()
。
如果数据具有要保留的列标签和索引标签,则有一些选项。
示例数据:
>>> df = pd.DataFrame([[1,2,3],[3,4,5]], \
columns=('first', 'second', 'third'), \
index=('alpha', 'beta'))
>>> df
first second third
alpha 1 2 3
beta 3 4 5
的 tolist()
其他答案中描述方法很有用,但仅生成核心数据-可能还不够,具体取决于您的需求。
>>> df.values.tolist()
[[1, 2, 3], [3, 4, 5]]
一种方法是使用将转换DataFrame
为json df.to_json()
,然后再次解析。这很麻烦,但确实具有一些优点,因为该to_json()
方法具有一些有用的选项。
>>> df.to_json()
{
"first":{"alpha":1,"beta":3},
"second":{"alpha":2,"beta":4},"third":{"alpha":3,"beta":5}
}
>>> df.to_json(orient='split')
{
"columns":["first","second","third"],
"index":["alpha","beta"],
"data":[[1,2,3],[3,4,5]]
}
繁琐,但可能有用。
好消息是,为列和行建立列表非常简单:
>>> columns = [df.index.name] + [i for i in df.columns]
>>> rows = [[i for i in row] for row in df.itertuples()]
这样产生:
>>> print(f"columns: {columns}\nrows: {rows}")
columns: [None, 'first', 'second', 'third']
rows: [['alpha', 1, 2, 3], ['beta', 3, 4, 5]]
如果None
索引的名称令人讨厌,则将其重命名:
df = df.rename_axis('stage')
然后:
>>> columns = [df.index.name] + [i for i in df.columns]
>>> print(f"columns: {columns}\nrows: {rows}")
columns: ['stage', 'first', 'second', 'third']
rows: [['alpha', 1, 2, 3], ['beta', 3, 4, 5]]
DataFrame.itertuples()
或DataFrame.to_records()
所有这些都不会更简单吗?
注意:我在堆栈溢出中看到了很多情况,其中完全不需要将Pandas Series或DataFrame转换为NumPy数组或纯Python列表。如果您不熟悉该库,请考虑仔细检查那些Pandas对象是否已经提供了所需的功能。
引用@jpp 的评论:
在实践中,通常不需要将NumPy数组转换为列表列表。
如果Pandas DataFrame / Series不起作用,则可以使用内置的DataFrame.to_numpy
和Series.to_numpy
方法。
for elem in some_series.values.tolist():
因为它们不知道您可以迭代系列的元素。我不确定这个答案有什么可怕的。
我们可以使用DataFrame.iterrows()函数遍历给定Dataframe的每一行,并根据每一行的数据构造一个列表:
# Empty list
row_list =[]
# Iterate over each row
for index, rows in df.iterrows():
# Create list for the current row
my_list =[rows.Date, rows.Event, rows.Cost]
# append the list to the final list
row_list.append(my_list)
# Print
print(row_list)
我们可以成功地将给定数据帧的每一行提取到一个列表中
L
在输出中附加s?