Có một chút mơ hồ trong câu hỏi của bạn. Có ít nhất ba hai cách hiểu:
- các khóa trong
di
tham chiếu đến các giá trị chỉ mục
- các khóa trong
di
tham chiếu đến df['col1']
các giá trị
- các khóa trong
di
tham chiếu đến các vị trí chỉ mục (không phải câu hỏi của OP, nhưng được ném vào cho vui.)
Dưới đây là một giải pháp cho từng trường hợp.
Trường hợp 1:
Nếu các khóa di
có nghĩa là tham chiếu đến các giá trị chỉ mục, thì bạn có thể sử dụng update
phương thức:
df['col1'].update(pd.Series(di))
Ví dụ,
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)
sản lượng
col1 col2
1 w a
2 B 30
0 A NaN
Tôi đã sửa đổi các giá trị từ bài viết gốc của bạn để rõ ràng hơn những gì update
đang làm. Lưu ý cách các khóa trong di
được liên kết với các giá trị chỉ mục. Thứ tự của các giá trị chỉ mục - nghĩa là các vị trí chỉ mục - không quan trọng.
Trường hợp 2:
Nếu các khóa trong di
tham chiếu đến df['col1']
các giá trị, thì @DanAllan và @DSM chỉ ra cách đạt được điều này với 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)
sản lượng
col1 col2
1 w a
2 A 30
0 B NaN
Lưu ý làm thế nào trong trường hợp này, các khóa trong di
đã được thay đổi để khớp với các giá trị trong df['col1']
.
Trường hợp 3:
Nếu các khóa trong di
tham chiếu đến các vị trí chỉ mục, thì bạn có thể sử dụng
df['col1'].put(di.keys(), di.values())
từ
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)
sản lượng
col1 col2
1 A a
2 10 30
0 B NaN
Ở đây, các hàng đầu tiên và thứ ba được thay đổi, bởi vì các phím trong di
là 0
và 2
, trong đó có chỉ mục 0 dựa trên Python tham khảo các địa điểm đầu tiên và thứ ba.
col```` is tuple. The error info is
không thể so sánh các loại 'ndarray (dtype = object)' và 'tuple'```