В вашем вопросе есть немного неясности. Существует как минимум три две интерпретации:
- ключи
di
относятся к значениям индекса
- ключи
di
относятся к df['col1']
значениям
- ключи
di
относятся к указателям (не вопрос ОП, но добавлены для забавы).
Ниже приведено решение для каждого случая.
Случай 1:
если ключи di
предназначены для ссылки на значения индекса, то вы можете использовать update
метод:
df['col1'].update(pd.Series(di))
Например,
import pandas as pd
import numpy as np
df = pd.DataFrame({'col1':['w', 10, 20],
'col2': ['a', 30, np.nan]},
index=[1,2,0])
# col1 col2
# 1 w a
# 2 10 30
# 0 20 NaN
di = {0: "A", 2: "B"}
# The value at the 0-index is mapped to 'A', the value at the 2-index is mapped to 'B'
df['col1'].update(pd.Series(di))
print(df)
доходность
col1 col2
1 w a
2 B 30
0 A NaN
Я изменил значения из вашего исходного поста, чтобы было понятнее, что update
происходит. Обратите внимание, как ключи di
связаны со значениями индекса. Порядок значений индекса, то есть местоположения индекса, не имеет значения.
Случай 2:
если ключи di
относятся к df['col1']
значениям, то @DanAllan и @DSM показывают, как этого добиться с помощью replace
:
import pandas as pd
import numpy as np
df = pd.DataFrame({'col1':['w', 10, 20],
'col2': ['a', 30, np.nan]},
index=[1,2,0])
print(df)
# col1 col2
# 1 w a
# 2 10 30
# 0 20 NaN
di = {10: "A", 20: "B"}
# The values 10 and 20 are replaced by 'A' and 'B'
df['col1'].replace(di, inplace=True)
print(df)
доходность
col1 col2
1 w a
2 A 30
0 B NaN
Обратите внимание, как в этом случае ключи di
были изменены, чтобы соответствовать значениям в df['col1']
.
Случай 3:
если ключи di
относятся к указателям, то вы можете использовать
df['col1'].put(di.keys(), di.values())
поскольку
df = pd.DataFrame({'col1':['w', 10, 20],
'col2': ['a', 30, np.nan]},
index=[1,2,0])
di = {0: "A", 2: "B"}
# The values at the 0 and 2 index locations are replaced by 'A' and 'B'
df['col1'].put(di.keys(), di.values())
print(df)
доходность
col1 col2
1 A a
2 10 30
0 B NaN
Здесь первые и третьи ряды были изменены, потому что ключи в di
это 0
и 2
, которые при индексации на основе 0 Пайтона относятся к первым и третьим местам.
col```` is tuple. The error info is
не удается сравнить типы 'ndarray (dtype = object)' и 'tuple'```