我有一个dataframe df从一个Excel文档导入,就像这样:

cluster load_date   budget  actual  fixed_price
A   1/1/2014    1000    4000    Y
A   2/1/2014    12000   10000   Y
A   3/1/2014    36000   2000    Y
B   4/1/2014    15000   10000   N
B   4/1/2014    12000   11500   N
B   4/1/2014    90000   11000   N
C   7/1/2014    22000   18000   N
C   8/1/2014    30000   28960   N
C   9/1/2014    53000   51200   N

我希望能够返回列1 df['cluster']的内容作为列表,这样我就可以在上面运行for循环,并为每个集群创建一个Excel工作表。

是否也可以将整个列或行的内容返回到列表中?如。

list = [], list[column1] or list[df.ix(row1)]

当前回答

如果你想使用索引而不是列名(例如在循环中),你可以使用

for i in range(len(df.columns)):
    print(df[df.columns[i]].to_list())

其他回答

假设读取excel表格后的dataframe的名称是df,取一个空列表(例如dataList),逐行迭代dataframe,并像-一样添加到空列表中

dataList = [] #empty list
for index, row in df.iterrows(): 
    mylist = [row.cluster, row.load_date, row.budget, row.actual, row.fixed_price]
    dataList.append(mylist)

Or,

dataList = [] #empty list
for row in df.itertuples(): 
    mylist = [row.cluster, row.load_date, row.budget, row.actual, row.fixed_price]
    dataList.append(mylist)

不,如果你打印dataList,你会得到每一行作为一个列表在dataList。

转换示例:

>熊猫数据帧->列表从一个熊猫列

Numpy数组

data = np.array([[10,20,30], [20,30,60], [30,60,90]])

将numpy数组转换为Panda数据帧

dataPd = pd.DataFrame(data = data)
    
print(dataPd)
0   1   2
0  10  20  30
1  20  30  60
2  30  60  90

将一个Panda列转换为列表

pdToList = list(dataPd['2'])

如果你想使用索引而不是列名(例如在循环中),你可以使用

for i in range(len(df.columns)):
    print(df[df.columns[i]].to_list())

如果你的列只有一个值,像pd.series.tolist()这样的东西会产生一个错误。为了保证它在所有情况下都能工作,请使用下面的代码:

(
    df
        .filter(['column_name'])
        .values
        .reshape(1, -1)
        .ravel()
        .tolist()
)
 amount = list()
    for col in df.columns:
        val = list(df[col])
        for v in val:
            amount.append(v)