gpt4 book ai didi

python - Pandas - 改变组的值

转载 作者:太空宇宙 更新时间:2023-11-03 14:23:44 25 4
gpt4 key购买 nike

如果行组标签没有足够的点,我需要更改行组标签的值。例如,

+-----+
|c1|c2|
+-----+
|A |1 |
|A |2 |
|B |1 |
|A |2 |
|E |5 |
|E |6 |
|W |1 |
+-----+

如果我要对 c2 内的值进行分组,并且每组内的最小点数必须大于或等于 2。

c2:
1 : count(c1) = 3
2 : count(c1) = 2
5 : count(c1) = 1
6 : count(c1) = 1

显然,第 5 组和第 6 组只有 1 个元素,因此我想将这些行的 c2 值重新标记为 -1。

这可以在下面看到。

+-----+
|c1|c2|
+-----+
|A |1 |
|A |2 |
|B |1 |
|A |2 |
|E |-1|
|E |-1|
|W |1 |
+-----+

这是我编写的代码,但它没有更新数据帧。

labels = df["c2"].unique()
for l in labels:
group_size = df[DB["c2"]==l].shape[0]
if group_size<=minPts:
df[df["c2"]==l]["c2"] = -1

最佳答案

您可以使用value_counts ,然后通过 mask 使用 isin 过滤和最后设置的值:

s = df['c2'].value_counts()
s = s.index[s < 2]
print (s)
Int64Index([6, 5], dtype='int64')

df.loc[df['c2'].isin(s), 'c2'] = -1
print (df)
c1 c2
0 A 1
1 A 2
2 B 1
3 A 2
4 E -1
5 E -1
6 W 1

详细信息:

print (df['c2'].value_counts())
1 3
2 2
6 1
5 1
Name: c2, dtype: int64
<小时/>
print (df['c2'].isin(s))
0 False
1 False
2 False
3 False
4 True
5 True
6 False
Name: c2, dtype: bool

关于python - Pandas - 改变组的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47771894/

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