Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用条件用同一列中的前一个字符串填充空值_Python_Python 3.x_Pandas_Dataframe_Fillna - Fatal编程技术网

Python 使用条件用同一列中的前一个字符串填充空值

Python 使用条件用同一列中的前一个字符串填充空值,python,python-3.x,pandas,dataframe,fillna,Python,Python 3.x,Pandas,Dataframe,Fillna,我有一个dataframe,其中一列上缺少值,我试图用同一列中的前一个字符串填充这些缺少的值,但假设另一列==某个值。[图片][1] 例如,我只想为Business Unit='GTI Shared S2D'所在的行用前面的字符串填充'Name'下缺少的值 假设我们有这样一个数据帧 名称零件尺寸(GB)业务单位 579 srv005831 120.0 GTI共享S2D 580 Nan 50.0 GTI共享S2D 581 Nan 30.0 GTI共享S2D 582 srv000711 120.0

我有一个dataframe,其中一列上缺少值,我试图用同一列中的前一个字符串填充这些缺少的值,但假设另一列==某个值。[图片][1]

例如,我只想为Business Unit='GTI Shared S2D'所在的行用前面的字符串填充'Name'下缺少的值

假设我们有这样一个数据帧

名称零件尺寸(GB)业务单位 579 srv005831 120.0 GTI共享S2D
580 Nan 50.0 GTI共享S2D
581 Nan 30.0 GTI共享S2D
582 srv000711 120.0 GTI共享S2D
583 Nan 50.0 GTI共享S2D

584南20呼叫中心

输出应如下所示

名称零件尺寸(GB)业务单位

579 srv005831 120.0 GTI共享S2D
580 srv005831 50.0 GTI共享S2D
581 srv005831 30.0 GTI共享S2D
582 srv000711 120.0 GTI共享S2D
583 srv000711 50.0 GTI共享S2D
584南20呼叫中心
[1] :

您可以使用
ffill()

以下面的df为例:

In [331]: df = pd.DataFrame({'Name':['srv005831', 'srv005632', np.nan, np.nan], 'Part Size(GB)':[120.0, 50.0, 30.0, 120.0], 'Business Unit':['GTI Shared S2D', 'Call Center', 'GTI Shared S2D', 'GTI Shared S2D']})

In [332]: df
Out[332]: 
        Name  Part Size(GB)   Business Unit
0  srv005831          120.0  GTI Shared S2D
1  srv005632           50.0     Call Center
2        NaN           30.0  GTI Shared S2D
3        NaN          120.0  GTI Shared S2D
我的代码运行良好:

In [339]: ix = df[df['Business Unit'] == 'GTI Shared S2D'].index.tolist()

In [346]: df.loc[ix] = df.loc[ix]['Name'].ffill()

In [347]: df
Out[347]: 
        Name Part Size(GB) Business Unit
0  srv005831     srv005831     srv005831
1  srv005632            50   Call Center
2  srv005831     srv005831     srv005831
3  srv005831     srv005831     srv005831

您好,我试过了,但是所有其他业务单位不等于Nan的值现在都是NanCan。您可以共享一个具有预期输出的数据帧样本。@KhutsoMphelo请参考我在回答中添加的示例。我已经编辑了问题,请检查以获取预期输出
In [331]: df = pd.DataFrame({'Name':['srv005831', 'srv005632', np.nan, np.nan], 'Part Size(GB)':[120.0, 50.0, 30.0, 120.0], 'Business Unit':['GTI Shared S2D', 'Call Center', 'GTI Shared S2D', 'GTI Shared S2D']})

In [332]: df
Out[332]: 
        Name  Part Size(GB)   Business Unit
0  srv005831          120.0  GTI Shared S2D
1  srv005632           50.0     Call Center
2        NaN           30.0  GTI Shared S2D
3        NaN          120.0  GTI Shared S2D
In [339]: ix = df[df['Business Unit'] == 'GTI Shared S2D'].index.tolist()

In [346]: df.loc[ix] = df.loc[ix]['Name'].ffill()

In [347]: df
Out[347]: 
        Name Part Size(GB) Business Unit
0  srv005831     srv005831     srv005831
1  srv005632            50   Call Center
2  srv005831     srv005831     srv005831
3  srv005831     srv005831     srv005831