python 3.5 pandas读取excel并转换为列表

问题描述 投票:1回答:3

我有一个带有数据的excel文件,如下所示:

 Col_Title1 | Col_Title2 | Col_Title3 | Label
 Row11      | Row12      | Row13      | 1
 Row21      | Row22      | Row23      | 2
 Row31      | Row32      | Row33      | 3

使用pandas,我读取这个excel文件,如下所示:

import pandas as pd

df = pd.read_excel(FOLDER_DOWNLOAD_LOCATION + '1.xlsx', sheet_name='Sheet1')

现在,我希望使用df输出以下列表:

1. [[Row11, Row12, Row13], [Row21, Row22, Row23], [Row31, Row32, Row33]]

2. [1,2,3]

我不知道获得这种类型的列表输出的有效方法或好方法。

附:我是编程的新手,很抱歉提出这类问题。

python python-3.x list pandas dataframe
3个回答
2
投票

我相信你需要删除Label列,通过values转换为numpy数组,然后转换为list

a = df.drop('Label', 1).values.tolist()
print (a)
[['Row11', 'Row12', 'Row13'], ['Row21', 'Row22', 'Row23'], ['Row31', 'Row32', 'Row33']]

b = df['Label'].values.tolist()
print (b)
[1, 2, 3]

0
投票

一种方法是使用切片,假设您事先知道列的顺序。

df_values = df.values

# [['Row11' 'Row12' 'Row13' 1]
#  ['Row21' 'Row22' 'Row23' 2]
#  ['Row31' 'Row32' 'Row33' 3]]

然后切片适当:

df_values[:, :-1].tolist()

# [['Row11', 'Row12', 'Row13'],
#  ['Row21', 'Row22', 'Row23'],
#  ['Row31', 'Row32', 'Row33']]

df_values[:, -1].tolist()

# [1, 2, 3]

0
投票

选项1 np.split

a, b = np.split(df.values, [-1], axis=1)

a.tolist()
[['Row11', 'Row12', 'Row13'],
 ['Row21', 'Row22', 'Row23'],
 ['Row31', 'Row32', 'Row33']]

b.ravel().tolist()
[1, 2, 3]

选项2 pd.DataFrame.pop

b = df.pop('Label')

df.values.tolist()
[['Row11', 'Row12', 'Row13'],
 ['Row21', 'Row22', 'Row23'],
 ['Row31', 'Row32', 'Row33']]

b.values.tolist()
[1, 2, 3]
© www.soinside.com 2019 - 2024. All rights reserved.