首页 > 解决方案 > Pandas Dataframe:如何用列中的值之一填充对象类型?

问题描述

例如,我有一个 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)

出去:

 company  price product
0        NaN     25    coca
1  coca-cola     94     NaN
2        NaN     57   pepsi
3        NaN     62   pepsi
4        NaN     70  orange

我想用相应列中的值填充对象类型。

预期输出:</p>

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。那么该怎么做呢?

标签: pythonpandasdataframe

解决方案


试试这个:

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'])

推荐阅读