Python 如何在dataframe中创建密集列组时跳过列的空值?
我必须根据列的值创建密集的列。该列有一些空值和一些浮点值。我必须跳过空值,专注于浮点值。我不知道该怎么做? 你能帮我做这件事吗 说明: df: 我使用下面的代码来创建密集的排名-Python 如何在dataframe中创建密集列组时跳过列的空值?,python,pandas,dataframe,dense-rank,Python,Pandas,Dataframe,Dense Rank,我必须根据列的值创建密集的列。该列有一些空值和一些浮点值。我必须跳过空值,专注于浮点值。我不知道该怎么做? 你能帮我做这件事吗 说明: df: 我使用下面的代码来创建密集的排名- df['dense_rank'] = df.groupby('comb_fld_order', sort=True).ngroup()+1 它给了我输出: comb_fld_order dense_rank 0 NULL 2 1 NULL 2 2
df['dense_rank'] = df.groupby('comb_fld_order', sort=True).ngroup()+1
它给了我输出:
comb_fld_order dense_rank
0 NULL 2
1 NULL 2
2 NULL 2
3 1.1 1
4 1.1 1
5 NULL 2
但我想要以下输出:
comb_fld_order dense_rank
0 NULL
1 NULL
2 NULL
3 1.1 1
4 1.1 1
5 NULL
.groupby
NaN,请使用fillna(“”)
如果
NULL
是字符串,则可以执行以下操作:
df['dense_rank'] = df[df['comb_fld_order'] != 'NULL'].groupby('comb_fld_order', sort=True).ngroup()+1
.groupby
NaN,请使用fillna(“”)
如果
NULL
是字符串,则可以执行以下操作:
df['dense_rank'] = df[df['comb_fld_order'] != 'NULL'].groupby('comb_fld_order', sort=True).ngroup()+1
你可以给dropna=True 这就是我所做的
>>> import pandas as pd
>>> import numpy as np
>>> df = pd.DataFrame({'comb_fld_order':[np.nan, np.nan, np.nan, 1.1, 1.1, np.nan]})
>>> df
comb_fld_order
0 NaN
1 NaN
2 NaN
3 1.1
4 1.1
5 NaN
>>> df['dense_rank'] = df.groupby('comb_fld_order', sort=True,dropna=True).ngroup()+1
>>> df
comb_fld_order dense_rank
0 NaN 0
1 NaN 0
2 NaN 0
3 1.1 1
4 1.1 1
5 NaN 0
你可以给dropna=True 这就是我所做的
>>> import pandas as pd
>>> import numpy as np
>>> df = pd.DataFrame({'comb_fld_order':[np.nan, np.nan, np.nan, 1.1, 1.1, np.nan]})
>>> df
comb_fld_order
0 NaN
1 NaN
2 NaN
3 1.1
4 1.1
5 NaN
>>> df['dense_rank'] = df.groupby('comb_fld_order', sort=True,dropna=True).ngroup()+1
>>> df
comb_fld_order dense_rank
0 NaN 0
1 NaN 0
2 NaN 0
3 1.1 1
4 1.1 1
5 NaN 0
在创建稠密_列之前,我已经使用了df=df.fillna(“”)。我尝试了你的建议,但没有得到理想的结果。@shivampatel Try:
df['densite_rank']=df[df['comb_fld_order']!=“NULL'].groupby('comb_fld_order',sort=True).ngroup()+1
@DavidErickson IMHO你可以简单地使用df['comb fld_order'].rank(method='densite').fillna(
)+1Thanks@ShubhamSharma,我以前从未使用过.rank()
。不过,有一个简单的pandas方法并不让我感到惊讶。在创建稠密_列之前,我已经使用了df=df.fillna(“”)。我尝试了你的建议,但没有得到理想的结果。@shivampatel Try:df['densite_rank']=df[df['comb_fld_order']!=“NULL'].groupby('comb_fld_order',sort=True).ngroup()+1
@DavidErickson IMHO你可以简单地使用df['comb fld_order'].rank(method='densite').fillna(
)+1Thanks@ShubhamSharma,我以前从未使用过.rank()
。不过,有一个简单的方法可以解决这个问题,这并不奇怪。