繁体   English   中英

我无法更改具有特定条件的列的值

[英]I cannot change the values of a column with specific condition

该表如下所示:

文本 假人1
op123ac 1个 2000-01-01
op123ac 0 2000-01-04
op123ac 0 2000-01-07
op123ac 0 2000-01-10
op1248ab 0 2000-01-17
op1248ab 1个 2000-01-20
op1248ab 1个 2000-01-23
op1248ab 1个 2000-01-26

每个唯一的“文本”有四个重复的值对应于四个唯一的“天”。 每个“文本”的“天”是连续的。 问题是每个“文本”必须有一个唯一的“dummy1”,所以它必须是 1 或 0 并且:

df.groupby("text")['dummy'].sum() # Each "text" should get either 0 or 4, no other value are accept.

我认为错误“dummy1”的count少于正确的数量。 例如,“op123ac”在“dummy1”列中有 1 和 0,0(3) 的计数比 1(1) 的计数多得多,因此正确的“dummy1”应该是 0。“op1248ab”有更多的 1s大于 0,所以它的正确值应该是 1。正确的表格应该如下所示:

文本 假人1
op123ac 0 2000-01-01
op123ac 0 2000-01-04
op123ac 0 2000-01-07
op123ac 0 2000-01-10
op1248ab 1个 2000-01-17
op1248ab 1个 2000-01-20
op1248ab 1个 2000-01-23
op1248ab 1个 2000-01-26

对于任何“文本”值,0 的数量都不可能等于 1 的数量。

 df['dummy1'] = df.groupby('text')['dummy1'].transform(lambda x: x.mode().iat[0])

Output

       text  dummy1        days
0   op123ac       0  2000-01-01
1   op123ac       0  2000-01-04
2   op123ac       0  2000-01-07
3   op123ac       0  2000-01-10
4  op1248ab       1  2000-01-17
5  op1248ab       1  2000-01-20
6  op1248ab       1  2000-01-23
7  op1248ab       1  2000-01-26

一组值的众数是最常出现的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM