Python 3.x 数据帧组检查列的唯一值数是否为一,但不包括空字符串
我有以下Python 3.x 数据帧组检查列的唯一值数是否为一,但不包括空字符串,python-3.x,pandas,dataframe,pandas-groupby,Python 3.x,Pandas,Dataframe,Pandas Groupby,我有以下df id invoice_no 1 6636 1 6637 2 6639 2 6639 3 3 4 6635 4 6635 4 6635 id3的invoice\u no都是空字符串或空格;我想 df['same_invoice_no'] = df.groupby("id")["invoice_no"].transform('nunique') == 1 还考虑空格和空字符串发票> NO/每个组为 SA
df
id invoice_no
1 6636
1 6637
2 6639
2 6639
3
3
4 6635
4 6635
4 6635
id
3的invoice\u no
都是空字符串或空格;我想
df['same_invoice_no'] = df.groupby("id")["invoice_no"].transform('nunique') == 1
还考虑空格和空字符串<代码>发票> NO/<代码>每个组为<代码> SAMEYPUCICIONION= false ;我想知道怎么做。结果会是,
id invoice_no same_invoice_no
1 6636 False
1 6637 False
2 6639 True
2 6639 True
3 False
3 False
4 6635 True
4 6635 True
4 6635 True
空字符串等于True,但nan不等于。用Numpy-nan替换空字符串
df.replace('', np.nan, inplace = True)
df['same_invoice_no'] = df.groupby("id")["invoice_no"].transform('nunique') == 1
id invoice_no same_invoice_no
0 1 6636.0 False
1 1 6637.0 False
2 2 6639.0 True
3 2 6639.0 True
4 3 NaN False
5 3 NaN False
6 4 6635.0 True
7 4 6635.0 True
8 4 6635.0 True
只需转换为
float
,那么nan
将是False
,正如您所知,np.nan==np.nan是False。您希望将空值视为彼此相等,那么为什么不使用fillna(-99)
或其他一些无意义的值呢。