Допустим, у меня есть следующие панды DataFrame:
import pandas as pd
data = [['Alex',10],['Bob',12],['Clarke',13], ['Bob', '#'], ['Bob', '#'], ['Bob', '#']]
df = pd.DataFrame(data,columns=['Name','Age'], dtype=float)
print(df)
Name Age
0 Alex 10
1 Bob 12
2 Clarke 13
3 Bob #
4 Bob #
5 Bob #
Итак, в DataFrame есть нечетные строки для Bob
, а именно строки 3, 4 и 5. Эти значения согласованно #
, а не 12. Строка 1 показывает, что Bob
должно быть 12, а не #
.
В этом примере это просто исправить с помощью replace()
:
df = df.replace("#", 12)
print(df)
Name Age
0 Alex 10
1 Bob 12
2 Clarke 13
3 Bob 12
4 Bob 12
5 Bob 12
Однако это не сработает для больших фреймов данных, например,
Name Age
0 Alex 10
1 Bob 12
2 Clarke 13
3 Bob #
4 Bob #
5 Bob #
6 Clarke #
при этом строка 6 должна быть 6 Clarke 13
.
Как заменить любую строку в Age
на #
на правильное целое число, указанное в других строках на основе Name
?Если существует #
, проверьте другие строки с тем же значением Name и замените #
.