как переслать заполнить значения столбца на основе значения в другом столбце в той же строке - PullRequest
1 голос
/ 01 февраля 2020

Я хочу переслать заполнить столбец суммы на основе столбца раз. например, первое значение 2800000.0, я хочу, чтобы это значение было заполнено 6 раз.

amount      times       
2800000.0    6
nan     0    0   
nan     0    0   
nan     0    0   
nan     0    0   
nan     0    0   
nan     0    0   
4750000.0    4         
nan     0    0   
nan     0    0   
nan     0    0   
nan     0    0   
nan     0    0   
nan     0    0    

Желаемый результат:

amount      times       
2800000.0    6
2800000.0    0   
2800000.0    0   
2800000.0    0   
2800000.0    0   
2800000.0    0   
2800000.0    0   
4750000.0    4         
4750000.0    0   
4750000.0    0   
4750000.0    0   
4750000.0    0   
nan     0    0   
nan     0    0   

1 Ответ

2 голосов
/ 01 февраля 2020

Сначала создайте группы путем проверки не пропущенных значений с накопленной суммой и перейдите к GroupBy.apply с лямбда-функцией с Series.ffill с ограничением по первому значению times для групп :

#if necessary convert strings t onumeric and NaNs
#df['amount'] = pd.to_numeric(df['amount'], errors='coerce')

print (df['amount'].dtype)
float64

g = df['amount'].notna().cumsum()

f = lambda x: x['amount'].ffill(limit=x['times'].iat[0])
df['amount'] = df.groupby(g, group_keys=False).apply(f)
print (df)
       amount  times
0   2800000.0      6
1   2800000.0      0
2   2800000.0      0
3   2800000.0      0
4   2800000.0      0
5   2800000.0      0
6   2800000.0      0
7   4750000.0      4
8   4750000.0      0
9   4750000.0      0
10  4750000.0      0
11  4750000.0      0
12        NaN      0
13        NaN      0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...