Я хочу заполнить нулевые значения в первом столбце на основе значения второго столбца. (Например)
- Для "Яблок" в столбце 2 значение должно быть 12 в местах Нан в столбце 1.
- Для "Vegies" в столбце 2 значение должно быть 134 вместо Нан в столбце 1.
Для каждого описания в 1-м столбце есть определенный код (номер). Мне нужно как-то это отобразить.
(ИГНОРИРУЙТЕ. (Точки)
Все, что я могу придумать, - это составить словарь кодов и заменить null, но он очень жестко запрограммирован.
Кто-нибудь может помочь?
col1. col2
12. Apple
134. Vegies
23. Oranges
Nan. Apples
Nan. Vegies
324. Sugar
Nan. Apples
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
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.