gpt4 book ai didi

python - 将 numpy 数组分配给 Pandas 面具

转载 作者:太空宇宙 更新时间:2023-11-04 01:55:51 25 4
gpt4 key购买 nike

我在 pandas 掩码子集上执行了一项任务:

pdxy = pd.DataFrame(data,columns=['X','Y','C','CC'])
mask = pdxy[:]['Y']==8

print("pdxy[mask]")
print(pdxy[mask][:10])

pdxy[mask]
X Y C CC
17 17 8 0 0
18 18 8 0 0
48 48 8 0 0
56 56 8 0 0
63 63 8 0 0
66 66 8 0 0
73 73 8 0 0
87 87 8 0 0
103 103 8 0 0
116 116 8 0 0

kmeans = KMeans(n_clusters=5,random_state=0).fit(pdxy[mask]['X','Y'])

然后我想将结果(集群和集群中心)分配给 pandas 数据框中的列:

pdxy.loc[mask]['C']  = np.array(kmeans.labels_)
pdxy.loc[mask]['CC'] = np.array(kmeans.cluster_centers_[kmeans.labels_])[:,0]

不幸的是,DataFrame 没有被修改,即和赋值之前一样:

print("pdxy[mask] labeled")
print(pdxy[mask][:10])

pdxy[mask] labeled
X Y C CC
17 17 8 0 0
18 18 8 0 0
48 48 8 0 0
56 56 8 0 0
63 63 8 0 0
66 66 8 0 0
73 73 8 0 0
87 87 8 0 0
103 103 8 0 0
116 116 8 0 0

我能做什么?

最佳答案

使用 .loc 访问行+列是用逗号完成的,如 [row, col] 而不是 [row][col]

试试这个:

import numpy as np
import pandas as pd

pdxy = pd.DataFrame(data, columns=['X', 'Y', 'C', 'CC'])
mask = pdxy[:]['Y'] == 8

kmeans = KMeans(n_clusters=5,random_state=0).fit(pdxy[mask]['X','Y'])

pdxy.loc[mask, 'C'] = np.array(kmeans.labels_)
pdxy.loc[mask, 'CC'] = np.array(kmeans.cluster_centers_[kmeans.labels_])[:,0]

print("pdxy[mask] labeled")
print(pdxy[mask][:10])

关于python - 将 numpy 数组分配给 Pandas 面具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56838500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com