Pandas Dataframe: Как заполнить типы объектов одним из значений в столбцах? - PullRequest
0 голосов
/ 31 мая 2018

Например, у меня есть 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.Так как это сделать?

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

Просто используйте 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
0 голосов
/ 31 мая 2018

попробуйте это:

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'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...