我是pandas和bokeh的新手,我正在尝试从pandas数据框创建一个散点图。但是,我一直收到以下错误:
new_data[colname] = df[colname].tolist()
AttributeError: 'DataFrame' object has no attribute 'tolist'
使用散景中的虚拟数据(来自bokeh.sampledata.iris导入花朵作为数据),散射效果很好。
type tsneX tsneY +50.000 columns
0 A 53.828863 20.740931
1 B 57.816909 18.478468
2 A 55.913429 22.948167
3 C 56.603005 15.738954
scatter = Scatter(df, x='tsneX', y='tsneY',
color='type', marker='type',
title='t-sne',
legend=True)
编辑: 我没有使用tolist(),但是散景的Scatter()会产生并产生下面的错误。
答案 0 :(得分:9)
您错误地使用了str1 <- "S156 B1-1 U500 (HTA-1 0).SST RMA gene.sst-rma-gene-full-Signal"
。您想:tolist
后跟.values
tolist()
对于上述数据框,要将X和Y值作为列表获取,您可以执行以下操作:
type tsneX tsneY
0 A 53.828863 20.740931
1 B 57.816909 18.478468
2 A 55.913429 22.948167
3 C 56.603005 15.738954
正如您尝试将其设置为新数据框的列,您可以执行以下操作:
tsneY_data = df['tsneY'].values.tolist()
>> [20.740931, 18.478468, 22.948167, 15.7389541]
tsneX_data = df['tsneX'].values.tolist()
>> [53.828863, 57.816909, 55.913429, 56.603005]
答案 1 :(得分:0)
我首先从数据框中提取相关列来解决问题。
df = df.loc[:, ('type', 'tsneX', 'tsneY')
scatter = Scatter(df, x='tsneX', y='tsneY',
color='type', marker='type',
title='t-sne',
legend=True)