df['clusters']
包含具有4个簇0,1,2,3
的数据框。
我的目标是切片数据帧的最后一列,即数据帧中的列9
,然后根据群集标签检索行。
我已经使用csv
读取了pandas
格式的数据帧,并实现了k均值聚类并生成了4个聚类。群集位于df['clusters']
中。
我想借助这些信息可以为我提供帮助。
假设有四个带有标签0,1,2,3
的集群。
现在,我要切片一列并获取属于群集1
的列
答案 0 :(得分:0)
由于无法访问数据框,建议您将数据转换为numpy
数组
df_array = df.to_numpy(copy=True)
然后:
df_clustered = df_array[df_array[:,cluster_data_col]==cluster_type]
其中cluster_data_col
是存储集群结果的列号,而cluster_type
是四个集群中的任何一个。
答案 1 :(得分:0)
我看不到您的问题到底是什么-df[df['clusters'] == 3]
可以正常工作:
import pandas as pd
# dummy data:
df = pd.DataFrame({'a': [1, 2, 3, 8, 9], 'b': [3, 4, 5, 11, 2], 'clusters':[0,2,3,3,1]})
print(df)
# result:
a b clusters
0 1 3 0
1 2 4 2
2 3 5 3
3 8 11 3
4 9 2 1
print(df[df['clusters'] == 3])
# result:
a b clusters
2 3 5 3
3 8 11 3
是否还要删除(现在不需要)clusters
列?
df_3 = df[df['clusters'] == 3].drop(['clusters'], axis=1) # cluster #3
print(df_3)
# result
a b
2 3 5
3 8 11
更新(在注释后):从a
中切片列df_3
:
df_3_a = df_3.loc[:, ['a']]
print(df_3_a)
# result:
a
2 3
3 8
因此,从初始的df
开始,然后为a
选择cluster==3
:
df_3_a = df[df['clusters'] == 3].drop(['clusters'], axis=1).loc[:,['a']]
print(df_3_a_)
# result:
a
2 3
3 8