![](/img/trans.png)
[英]Create column based on value from different column Pandas Dataframe
[英]Pandas DataFrame : Create a column based on values from different rows
我有一个看起来像这样的熊猫数据框:
Ref Value
1 SKU1 A
2 SKU2 A
3 SKU3 B
4 SKU2 A
5 SKU1 B
6 SKU3 C
我想创建一个新列,以给定 Ref 的值是否匹配为条件。 例如,如果 SKU1 的两行具有相同的值,则显示“好”,如果不显示“坏”数据框通常每个 Ref 有 2 行,但有时会有更多(在这种情况下,“好”是它们都相互匹配)
对于上面的示例,这将是:
Ref Value NewCol
1 SKU1 A bad
2 SKU2 A good
3 SKU3 B bad
4 SKU2 A good
5 SKU1 B bad
6 SKU3 C bad
实现这一点的最佳方法是什么? 在我的示例中, Value只能是 A、B 或 C,但Ref有数千个不同的条目,这就是我挣扎的原因
提前谢谢了 !
让我们尝试groupby().nunique()
来检查 ref 中值的数量:
df['NewCol'] = np.where(df.groupby('Ref')['Value'].transform('nunique')==1,
'good', 'bad')
输出:
Ref Value NewCol
1 SKU1 A bad
2 SKU2 A good
3 SKU3 B bad
4 SKU2 A good
5 SKU1 B bad
6 SKU3 C bad
更新:每条评论:
s = df['Ref'].map(df.groupby('Ref')['Value'].apply(set))
df['NewCol'] = np.select((s.str.len()==1, s.eq({'A','B'})),
('good', 'average'), 'bad')
输出:
Ref Value NewCol
1 SKU1 A average
2 SKU2 A good
3 SKU3 B bad
4 SKU2 A good
5 SKU1 B average
6 SKU3 C bad
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.