Python Dataframe:基于另一列更改列的值?

花椒花椒:

我有一个带有两列a的DataFrame b我想要更改NaNcolumn中的值b例如:对于列中的123的值a,列同时b具有abcNaN我希望两者都更改为abc

df
         a        b
0     123       NaN
1     123       abc
2     456       def
3     456       NaN

我的预期结果是:

df
        a         b
0     123       abc
1     123       abc
2     456       def
3     456       def

样本数据:

import pandas as pd
from io import StringIO

s = '''\
a,b
123,NaN
123,abc
456,def
456,NaN
'''
df = pd.read_csv(StringIO(s))

描述问题以及我尝试过的事情:

df.loc[df.a == 123, 'b'] = "abc"

在这里,我只能更改为特定值。即,代替'b'abc如果'a'是123

但对于df.a == 123'b'价值NaN我也希望它更新abc

所以我尝试了

df.loc[df.a == NaN, 'b'] = "abc"

但是,这使所有空列都df进入abc

那么,我该如何进行呢?

编辑2:样本数据2

raw_data = {'a': [123, 123, 456, 456,789], 'b': 
[np.nan,'abc','def',np.nan,np.nan], 'c': 
[np.nan,np.nan,0,np.nan,np.nan]} 

 df = pd.DataFrame(raw_data, columns = 
['a', 'b','c']) 

年份:

 df['b'] = df['a'].map(df.groupby('a')['b'].first()).fillna(df['b'])
合资企业

也许首先对您的数据框进行排序,然后使用ffill就像是:

df = df.sort_values(by=['a','b']).fillna(method='ffill')

为此,当您有NaN不想覆盖的值(“ edit2”)时,还可以使用groupby

df['b'] = df.sort_values(by=['a','b','c']).groupby('a')['b'].ffill()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Python Pandas分组并基于另一列排除值

Python pandas:如何更改(复杂)基于另一列的一列?

Pandas 基于另一列 python 获取一列中的唯一值

Python Pandas组基于列并获取最大值,但基于另一列排除

Python Pandas DataFrame-如何基于另一列(日期类型)中的部分匹配来对一列中的值求和?

Python Pandas DataFrame检查一列的值是否在另一列表中

一列中的Python Shift值基于另一列中的Nan或布尔值

Python Pandas-基于另一列中先前值的新列

如何基于python(pandas,jupyter)中的另一列值获取一列的平均值

Python:基于另一列长度的条件列

Python Pandas DataFrame:查找另一列的每个唯一值的最大值

Python Dataframe根据另一列的值向新列添加值

无法将值存储在来自另一列(父)的 python Dataframe 列(派生)中

python数据框新列基于另一列,数据框的条件最小值为

Python Pandas:根据另一列更改条件

检查一列中的值是否在Python中另一列的间隔值中

Pandas / Python:根据另一列中的值设置一列的值

Python:为另一列中的单个值显示一列中的多个值

在Python Pandas中找到一列的最小值大于另一列的值

创建一列,其值是python中另一列范围的最大值

python pandas-根据另一列的内容将列中的值更改为布尔值

Python:由另一列运行最大值?

通过另一列(python)移动熊猫中的值

Python函数根据另一列填充nan值

根据另一列(Python,Pandas)中的值删除一列的重复项

在python數據框中使用另一列值擴展一列

Python:根据另一列的值从一列创建元组

如何根据另一列值Python总结一列

在csv文件python中获取另一列的一列的值