Python 在列表中分别获取每个数据框列名

Python 在列表中分别获取每个数据框列名,python,pandas,Python,Pandas,我有一个pandas数据框架,希望分别提取每个列名并将其附加到列表中 我试过这样的方法: def get_hist_data(data): # create an empty list histdata = [] for col in data.columns: test_list = "data['{}']".format(col) histdata += [test_list] histdata = '[%s

我有一个pandas数据框架,希望分别提取每个列名并将其附加到列表中

我试过这样的方法:

def get_hist_data(data):
    # create an empty list
    histdata = []
    for col in data.columns:
        test_list = "data['{}']".format(col)
        histdata += [test_list]
    histdata = '[%s]' % ', '.join(map(str, histdata))

    return histdata
我得到的输出是一个列表,
数据
现在是一个字符串:

[data['A'], data['B'],data['C']]
我不想将
数据
作为字符串,但希望将其作为数据帧,我将其作为函数
def get_hist_data(data)的参数传递:
并将每个列名放置在数据帧内


我想要上面显示的相同输出,但是
data
不是字符串,而是一个数据框,其中每个列名都将像
data['a'],data['B']…

您可以使用
df[col].to\u list()以列表的形式访问数据框的列


这将返回一个子列表,其中每个子列表都是原始
数据中的一列-

histdata = []
for col in data:
    df = pd.DataFrame(data[col]) 
    histdata.append(df)

for col in histdata:
    print(col)

这里histdata将包含所有的数据帧。

获得像[[0.20377654359365033,-0.9022193353460645,-1.1331746961471256…]这样的输出,但是我想要[data['A',data['B',data['C']],我认为您面临的问题是python不能以这种方式存储表示。您可以使用
[“data['A'],“data['B'],“data['C']”]
,其中每个项目都是一个字符串。但是,如果您希望列表中的每个项都是对dataframe列的引用,那么您将获得第一个输出。如果每个列表项都是一个列表,那么它将展开该列表并显示您正在获得的输出:
[[0.203…etc
。如果您可以解释更多您希望以这种方式存储数据的原因,那么我们可能能够帮到您。例如,为什么您正在获得的输出是“[[0.203…,…]”不足以满足您的需要?它用于以绘图方式绘制这些变量:
hist_data=[df['A'],df['B'],df['C']]colors=['A56CC1','A6ACEC','63F5EF']group#u标签=['group 1','group 2','group 3']densityPlot figure#factory.create#distplot(hist_数据,group_标签,colors=colors,bin_size=.2,show_rug=False)app.layout=html.Div([dcc.Graph(id='densityPlot',figure=densityPlot)])
您是否尝试过输出类似[0.203,-0.902,-1.133],…]的示例?它对我有效。只需运行您所拥有的:
hist_data=get_hist_data(data)#使用我的答案中的函数
混淆的是,您正在阅读的示例显示了
[df['A'],df['B'],df['C']
,但当您运行此函数时,它将计算为实际数字。这是一样的。
histdata = []
for col in data:
    df = pd.DataFrame(data[col]) 
    histdata.append(df)

for col in histdata:
    print(col)