Я хочу заполнить нулевые значения в первом столбце на основе значения второго столбца. (Например)

  1. Для "Яблок" в столбце 2 значение должно быть 12 в местах Нан в столбце 1.
  2. Для "Vegies" в столбце 2 значение должно быть 134 вместо Нан в столбце 1.

Для каждого описания в 1-м столбце есть определенный код (номер). Мне нужно как-то это отобразить.

(ИГНОРИРУЙТЕ. (Точки)

Все, что я могу придумать, - это составить словарь кодов и заменить null, но он очень жестко запрограммирован.

Кто-нибудь может помочь?

col1. col2

12.     Apple

134.    Vegies

23.     Oranges

Nan.    Apples

Nan.    Vegies

324.    Sugar

Nan.    Apples
0
Qaisar Shah 16 Апр 2020 в 12:16

1 ответ

Лучший ответ

** Обновить

Здесь я копирую ваш DF и реализацию:

import pandas as pd
import numpy as np
l1 = [12, 134, 23, np.nan, np.nan, 324, np.nan,np.nan,np.nan,np.nan]
l2 = ["Apple","Vegies","Oranges","Apples","Vegies","Sugar","Apples","Melon","Melon","Grapes"]
df = pd.DataFrame(l1, columns=["col1"])
df["col2"] = pd.DataFrame(l2)

df
Out[26]: 
    col1     col2
0   12.0    Apple
1  134.0   Vegies
2   23.0  Oranges
3    NaN   Apples
4    NaN   Vegies
5  324.0    Sugar
6    NaN   Apples
7    NaN    Melon
8    NaN    Melon
9    NaN   Grapes

Затем, чтобы заменить нулевые значения в соответствии с вашими правилами:

df.loc[df.col2 == "Vegies", 'col1'] = 134
df.loc[df.col2 == "Apple", 'col1'] = 12

Если вы хотите применить их к большим масштабам, подумайте сначала о создании словаря: например:

item_dict = {"Apples":12, "Melon":65, "Vegies":134, "Grapes":78}

Затем примените все это к вашему фрейму данных с помощью этой настраиваемой функции:

 def item_mapping(df, dictionary, colsource, coltarget):
    dict_keys = list(dictionary.keys())
    dict_values = list(dictionary.values())
    for x in range(len(dict_keys)):
        df.loc[df[colsource]==dict_keys[x], coltarget] = dict_values[x]
    return(df)

Примеры использования:

item_mapping(df, item_dict, "col2", "col1")
    col1     col2
0   12.0    Apple
1  134.0   Vegies
2   23.0  Oranges
3   12.0   Apples
4  134.0   Vegies
5  324.0    Sugar
6   12.0   Apples
7   65.0    Melon
8   65.0    Melon
9   78.0   Grapes
0
Jovan Geraldy Candra 17 Апр 2020 в 02:34