При выполнении итераций по строкам определенного столбца в фрейме данных Pandas я хотел бы добавить новую строку ниже текущей итерированной строки, если ячейка в текущей итерированной строке соответствует определенному условию.
Скажем, например:
df = pd.DataFrame(data = {'A': [0.15, 0.15, 0.7], 'B': [1500, 1500, 7000]})
DataFrame:
A B
0 0.15 1500
1 0.15 1500
2 0.70 7000
Попытка:
y = 100 #An example scalar
i = 1
for x in df['A']:
if x is not None: #Values in 'A' are filled atm, but not necessarily.
df.loc[i] = [None, x*y] #Should insert None into 'A', and product into 'B'.
df.index = df.index + 1 #Shift index? According to this S/O answer: https://stackoverflow.com/a/24284680/4909923
i = i + 1
df.sort_index(inplace=True) #Sort index?
Я пока не смог добиться успеха;получить смещенную индексную нумерацию, которая не начинается с 0, и строки, кажется, не вставляются упорядоченным образом:
A B
3 0.15 1500
4 NaN 70
5 0.70 7000
Я пробовал различные варианты этого, пытаясь использовать applymap
с лямбда-выражениемфункция, но не смог заставить его работать.
Желаемый результат:
A B
0 0.15 1500
1 None 15
2 0.15 1500
3 None 15
4 0.70 7000
5 None 70