python - 如何根据不同的列更改一列中的值?

标签 python pandas

如何根据 colb 更改 cola 上的值?例如,假设我想更改 ID = 1,4,7 的名称?

ID Name
1  Name1
2  Name2
3  Name3
4  Name4
5  Name5
6  Name6
7  Name7
8  Name8

我最好想使用字典,如下所示:

change = {
    1: 'foo',
    4: 'bar',
    7: 'baz'
}

如果我使用这样的 map 应用更改字典:

df['Name'] = df['ID'].map(change) 

但是,它只是更改了 1,4 和 7 的 ID。

ID Name
    1  foo
    2  
    3  
    4  bar
    5  
    6  
    7  baz
    8  

是否只更改字典中的行并忽略其余行?获取结果:

ID Name
1  foo
2  Name2
3  Name3
4  bar
5  Name5
6  Name6
7  baz
8  Name8

最佳答案

添加fillnacombine_first :

df['Name'] = df['ID'].map(change).fillna(df['Name'])
print (df)
   ID   Name
0   1    foo
1   2  Name2
2   3  Name3
3   4    bar
4   5  Name5
5   6  Name6
6   7    baz
7   8  Name8

或者:

df['Name'] = df['ID'].map(change).combine_first(df['Name'])
print (df)
   ID   Name
0   1    foo
1   2  Name2
2   3  Name3
3   4    bar
4   5  Name5
5   6  Name6
6   7    baz
7   8  Name8

关于python - 如何根据不同的列更改一列中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44188967/

相关文章:

python - 新添加的数据库条目在其他模型中不可见

python - pandas.DataFrame.to_csv : selectively apply date_format by column

python - 如何将列合并为 Python 中的单个列?

python - dask 数据框中的 df.groupby(...).apply(...) 函数

python - 如何对 pandas 数据框进行非规范化

python - 你能让一个对象可迭代吗?

python - 如何使用 Eclipse 和 PyDev 在 Python 中进行相对导入?

Python - wxPython 中的自定义样式

python - 为什么我的南迁不起作用?

python - 如何从数据框中的字符串中提取年份和月份