例如,我有一个df。
data = {'product': ['coca', np.nan, 'pepsi', 'pepsi', 'orange',],
'price': [25, 94, 57, 62, 70,],
'company':[np.nan,'coca-cola',np.nan,np.nan,np.nan,]}
df = pd.DataFrame(data)
OUT:
company price product
0 NaN 25 coca
1 coca-cola 94 NaN
2 NaN 57 pepsi
3 NaN 62 pepsi
4 NaN 70 orange
我想在对应的列中用值填充对象类型。
预期输出:
df
company price product
0 coca-cola 25 coca
1 coca-cola 94 coca
2 coca-cola 57 pepsi
3 coca-cola 62 pepsi
4 coca-cola 70 orange
我尝试如下。
for col in df:
#get dtype for column
dt = df[col].dtype
#check if it is a number
if dt == int or dt == float:
pass
else:
df[col].fillna(df[col][0])
但是df[col][0]
可能是Nan,所以我应该填写一个不是nan
的值。
那怎么办呢?
答案 0 :(得分:0)
试试这个:
for i in range(0,df.company.count()):
if((df.company[i].isnull()==True)&(df.product[i].isnull()==False))
df.company[i]=df.product[i]
if((df.company[i].isnull()==False)&(df.product[i].isnull()==True))
df.product[i]=df.company[i]
或者你可以试试这个:
df['product'] = df['product'].fillna(df['company'])
df['company'] = df['company'].fillna(df['product'])
答案 1 :(得分:0)
只需使用 ffill
和 bfill
df.ffill().bfill()
product price company
0 coca 25 coca-cola
1 coca 94 coca-cola
2 pepsi 57 coca-cola
3 pepsi 62 coca-cola
4 orange 70 coca-cola