Python Pandas - 如何让 .replace 函数与字典和条件一起工作?

Python Pandas - How can I make .replace function work with dict and conditionals?

我正在尝试更改 .CSV 行数据。所以对于新数据,我有一个命令。我想说 python 如果我的字典中的键等于我的 .csv 中的项目行,则更改另一行中的数据。

CSV 文件类似于:

ID | Value_1 | Value_2  | Value_3 | 
1  | info    | changeme | info    |
1  | info    | changeme | info    |
2  | info    | changeme2| info    |
3  | info    | changeme3| info    |

字典看起来像这样:

dictionary = {1: 'info1', 2: 'info2', 3: 'info3'}

请注意,在 .csv 文件中 ID 可以重复,但在字典中不能重复(因为它是这样工作的)。因此,当我访问字典中的 key 并且该键等于 .csv 文件中的 ID 时, value_2 行(例如)必须将其内容更改为字典中键的

希望大家能理解我的解释:/

然后我尝试了这样的事情。但我真的不知道问题出在我的编码上还是 pandas:

for key, values in dictionary.items():
    if list(str(keys)) == list(df['ID']):
        df['VALUE'].replace(to_replace='VALUES', value= values, inplace= True)

但它不起作用。还在 for 循环之外尝试过,没有 if。它只是行不通。但是会创建一个新行,指示 .csv 文件的长度。

也许我不必使用 pandas 来执行此操作?任何建议都会有所帮助!

我很确定这就是您想要的 - 尽管您的问题不是很清楚。

# assuming df is this
"""
ID | Value_1 | Value_2  | Value_3 | 
1  | info    | changeme | info    |
1  | info    | changeme | info    |
2  | info    | changeme2| info    |
3  | info    | changeme3| info    |
"""
dictionary = {1: 'info1', 2: 'info2', 3: 'info3'}

df["ID"] = df["ID"].astype(int)
df["column_with_mapped_value"] = df["ID"].replace(to_replace=dictionary)
# output
"""
   ID Value_1    Value_2 Value_3 column_with_mapped_value
0   1    info   changeme    info   info1
1   1    info   changeme    info   info1
2   2    info  changeme2    info   info2
3   3    info  changeme3    info   info3
"""

为了遍历检查条件的数据集,我通常使用 apply 方法。在你的情况下,会是这样的:

import pandas as pd

df = pd.read_csv('teste.csv', sep=';')

# ID Value_1   Value_2 Value_3
# 1    info   changeme    info
# 1    info   changeme    info
# 2    info   changeme    info
# 3    info   changeme    info
# 5    info   changeme    info

dictionary = {1: 'info1', 2: 'info2', 3: 'info3', 4: 'info4'}

df['Value_2'] = df.apply(lambda x: dictionary[x.ID] if x.ID in dictionary else x.Value_2, axis=1)

# ID Value_1   Value_2 Value_3
# 1    info     info1    info
# 1    info     info1    info
# 2    info     info2    info
# 3    info     info3    info
# 5    info  changeme    info

我在 csv 和字典中又添加了一行,以测试如果其中一个键不存在会发生什么情况。