如何从特定列中切片群集

时间:2019-03-01 06:45:36

标签: python pandas dataframe slice

df['clusters']包含具有4个簇0,1,2,3的数据框。
我的目标是切片数据帧的最后一列,即数据帧中的列9,然后根据群集标签检索行。

我已经使用csv读取了pandas格式的数据帧,并实现了k均值聚类并生成了4个聚类。群集位于df['clusters']中。

我想借助这些信息可以为我提供帮助。
假设有四个带有标签0,1,2,3的集群。
现在,我要切片一列并获取属于群集1的列

2 个答案:

答案 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