Перемещение вправо нескольких столбцов, если значение другого столбца равно NaN в Pandas - PullRequest
1 голос
/ 04 марта 2020

Я бы хотел переместить price, quantity столбцов на одно место справа, если значения строки volume равны NaN:

                  date          price  quantity   volume
0  2015/01/28 10:00:00              0      5820      NaN
1  2020/02/27 11:10:44  3,164,886.76          0   8338.0
2  2018/07/19 10:27:32    16,220,000          0   9229.0
3  2019/11/02 10:29:49     2,847,767          0   8321.0
4  2018/03/18 10:00:00     1,194,656          0   9824.0
5  2018/11/17 10:00:00              0      5108      NaN
6  2017/12/26 10:20:44     2,909,552          0  11153.0
7  2019/02/17 10:47:35              0      7341      NaN
8  2019/09/26 10:11:07     3,539,472          0   8086.0
9  2017/04/10 10:00:00     3,066,040          0  10682.0

Я отфильтровал подмножество кадра данных df[df['volume'].isnull()]

                  date price  quantity  volume
0  2015/01/28 10:00:00     0      5820     NaN
5  2018/11/17 10:00:00     0      5108     NaN
7  2019/02/17 10:47:35     0      7341     NaN

Интересно, как я могу получить такой вывод, спасибо.

                  date          price  quantity  volume
0  2015/01/28 10:00:00            NaN         0    5820
1  2020/02/27 11:10:44  3,164,886.76          0    8338
2  2018/07/19 10:27:32    16,220,000          0    9229
3  2019/11/02 10:29:49     2,847,767          0    8321
4  2018/03/18 10:00:00     1,194,656          0    9824
5  2018/11/17 10:00:00            NaN         0    5108
6  2017/12/26 10:20:44     2,909,552          0   11153
7  2019/02/17 10:47:35            NaN         0    7341
8  2019/09/26 10:11:07     3,539,472          0    8086
9  2017/04/10 10:00:00     3,066,040          0   10682

1 Ответ

2 голосов
/ 04 марта 2020

Использование ffill:

s = df["volume"].isnull()
df.loc[s] = df.loc[s].ffill(1)
df.loc[s,"quantity"] = 0 #or df.loc[s,"price"] if you want to move price
print (df)

                  date         price quantity volume
0  2015/01/28 10:00:00             0        0   5820
1  2020/02/27 11:10:44  3,164,886.76        0   8338
2  2018/07/19 10:27:32    16,220,000        0   9229
3  2019/11/02 10:29:49     2,847,767        0   8321
4  2018/03/18 10:00:00     1,194,656        0   9824
5  2018/11/17 10:00:00             0        0   5108
6  2017/12/26 10:20:44     2,909,552        0  11153
7  2019/02/17 10:47:35             0        0   7341
8  2019/09/26 10:11:07     3,539,472        0   8086
9  2017/04/10 10:00:00     3,066,040        0  10682
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...