Python:根据其他列上的条件使用值填充NaN

2024-09-28 22:35:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧(示例),如下所示(8K行和1.6K卖家)

# initialise data of sells.
data = {
    'name': ['Tom', 'Tom', 'Tom', 'Tom', 'Tom', 'jack', 'jack', 'jack', 'jack',
             'jack', 'Malik'],
    'week': [1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1],
    'sell': [20, 21, 19, 18, 23, 24, 36, 35, 46, 50, 44],
}
# Create DataFrame
df = pd.DataFrame(data)

# Print the output.
df

######

# initialise data of demand.
data1 = {'name': ['Tom', 'Tom', 'Tom', 'jack', 'jack', 'jack', 'jack', 'Malik'],
         'week': [1, 2, 3, 1, 2, 3, 4, 1],
         'demand': [28, 16, 43, 30, 35, 35, 72, 60]
         }

# Create DataFrame
df1 = pd.DataFrame(data1)

# Print the output.
df1
######
df2 = pd.merge(df, df1, on=['name', 'week'], how='outer')
df2['demand-sell'] = df2['demand'] - df2['sell']

df2

df2

     name  week  sell  demand  demand-sell
0     Tom     1    20    28.0          8.0
1     Tom     2    21    16.0         -5.0
2     Tom     3    19    43.0         24.0
3     Tom     4    18     NaN          NaN
4     Tom     5    23     NaN          NaN
5    jack     1    24    30.0          6.0
6    jack     2    36    35.0         -1.0
7    jack     3    35    35.0          0.0
8    jack     4    46    72.0         26.0
9    jack     5    50     NaN          NaN
10  Malik     1    44    60.0         16.0

预期产出:

输出函数

Output_function

一周=4

其中,我想用剩余需求的总和(需求-销售)填写NaN第4周的需求值,第1,2,3周的需求值=卖方(名称)

注意:

如果第4周需求不是NaN,则在第1,2,3周的(需求-销售)中添加第4周需求

{ex.如果name=jack}


一周=5
其中,我想用一周的剩余需求(需求-销售)之和=同一卖方(名称)的1,2,3,4来填写第5周的需求值

注意:

如果周=5需求不是NaN,则在周=1,2,3,4的(需求-销售)中添加周=5需求


为样本数据输出样本

Output_sample_for_sample_data


Tags: 数据namedataframedfdatananpddf1