Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 数据帧组检查列的唯一值数是否为一,但不包括空字符串_Python 3.x_Pandas_Dataframe_Pandas Groupby - Fatal编程技术网

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)
或其他一些无意义的值呢。