【问题标题】:Convert a value in one column to another value in another column将一列中的值转换为另一列中的另一个值
【发布时间】:2022-01-13 21:00:36
【问题描述】:

我有一个文件,其中有 6 列数据; 州,县,候选人,党,total_votes,赢了

我想向此数据框添加一个新列 - 全名 使用下面的代码,我能够添加新列

df = pd.read_csv('president_county_candidate.csv')
new_column = pd.DataFrame({'Full Party Name': ['Democrat', 'Democrat', 'Republican','Republican']})
df = df.merge(new_column, left_index = True, right_index = True)
#df.to_csv('filename.csv', index = False)
print(df.head())

这添加了我的列,我现在遇到的问题是需要定义列中的数据。我已经手动在前 4 行中添加了一些值,但是不想对整个数据集执行此操作 - 我希望根据派对列中当前的值填充列值 - 所以我们看到“Rep”它应该在新列中输出“Republican”,在它看到“Dem”的地方应该输出“Democrat”。

是否有我应该使用的替换功能,或者是否有可以在这里工作的 if/loop 语句?

【问题讨论】:

  • 使用将短方名称映射到长名称的字典。然后就可以使用apply()来进行映射了。

标签: python pandas loops if-statement


【解决方案1】:

有几种方法可以做到。首先,您需要创建一个字典,将派对名称映射到完整的派对名称:

mapper = {"Rep": "Republican", "Dem": "Democrat"}

那么你可以使用.replace:

df['Full Party Name'] = df['party'].replace(mapper)

或使用.map:

df['Full Party Name'] = df['party'].map(mapper)

或使用.apply:

df['Full Party Name'] = df['party'].apply(lambda x: mapper[x] if x in mapper else x)

【讨论】:

    猜你喜欢
    • 2019-05-19
    • 2019-03-28
    • 1970-01-01
    • 1970-01-01
    • 2020-07-03
    • 2022-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多