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
ditham chiếu đến các giá trị chỉ mục
- các khóa trong
ditham chiếu đến df['col1']các giá trị
- các khóa trong
ditham 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 dicó nghĩa là tham chiếu đến các giá trị chỉ mục, thì bạn có thể sử dụng updatephươ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 ditham 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 ditham 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 dilà 0và 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 iskhông thể so sánh các loại 'ndarray (dtype = object)' và 'tuple'```