我有如下的数据框,我需要比较基于company
的组中列first_nm
和sur_nm
的行值。基于匹配,我将在输出中为status
列赋值。
+--------+--------+----------------+--------------+
| company| id| first_nm| sur_nm|
+--------+--------+----------------+--------------+
|SYNTHE01|SYNTHE02| JAMES| FOWLER|
|SYNTHE01|SYNTHE03| MONICA| FOWLER|
|SYNTHE01|SYNTHE04| GEORGE| FOWLER|
|SYNTHE08|SYNTHE05| JAMES| FIWLER|
|SYNTHE08|SYNTHE06| JAMES| FUWLER|
|SYNTHE08|SYNTHE07| JAMES| FAWLER|
|SYNTHE08|SYNTHE08| JAMES| FEWLER|
|SYNTHE11|SYNTHE12| JAMES| FOWLER|
|SYNTHE11|SYNTHE11| JAMES| FOWLER|
|SYNTHE09|SYNTHE0X| Null| Null|
|SYNTHE09|SYNTHE0Y| Null| Null|
|SYNTHE09|SYNTHE0Z| Null| Null|
+--------+--------+----------------+--------------+
对于例如。
如果所有行的first_nm
和sur_nm
都匹配,则特定的company
-status
为0。
如果company
组中只有first_nm
匹配-status
为1。
如果在company
组中只有sur_nm
匹配,则status
为2。
如果没有匹配项或值为空-status
为99。
输出 Dataframe 如下:
+--------+--------+----------------+--------------+-------+
| company| id| first_nm| sur_nm| status|
+--------+--------+----------------+--------------+-------+
|SYNTHE01|SYNTHE02| JAMES| FOWLER| 2|
|SYNTHE01|SYNTHE03| MONICA| FOWLER| 2|
|SYNTHE01|SYNTHE04| GEORGE| FOWLER| 2|
|SYNTHE08|SYNTHE05| JAMES| FIWLER| 1|
|SYNTHE08|SYNTHE06| JAMES| FUWLER| 1|
|SYNTHE08|SYNTHE07| JAMES| FAWLER| 1|
|SYNTHE08|SYNTHE08| JAMES| FEWLER| 1|
|SYNTHE11|SYNTHE12| JAMES| FOWLER| 0|
|SYNTHE11|SYNTHE11| JAMES| FOWLER| 0|
|SYNTHE09|SYNTHE0X| Null| Null| 99|
|SYNTHE09|SYNTHE0Y| Null| Null| 99|
|SYNTHE09|SYNTHE0Z| Null| Null| 99|
+--------+--------+----------------+--------------+-------+
我们如何在一个列中处理不同行值的这种比较。请引导。
谢谢你
2条答案
按热度按时间vsnjm48y1#
您的DataFrame(df):
1.导入必要的包
1.获取
first_nm
和sur_nm
的唯一计数1.应用条件
1.将其与原始DataFrame
df
连接输出:
x8diyxa72#
通过分组
company
列上的多个when
条件(到分组中的count distinct
值):