Для следующего фрейма данных:
import numpy as np
import pandas as pd
df = pd.DataFrame({'chr_key': [1, 1, 1, 2, 2, 3, 4],
'position': [123,124,125,126,127,128,129],
'hit_count': [20,19,18,17,16,15,14]})
df['strand'] = np.nan
Я хочу изменить столбец strand
так, чтобы:
for i in range(0, len(df['position'])):
if df['chr_key'][i] == df['chr_key'][i+1] and df['hit_count'][i] >= df['hit_count'][i+1]:
df['strand'][i] = 'F'
else:
df['strand'][i] = 'R'
Мой фактический df
был> 100k строк, поэтомуцикл for медленный, как можно себе представить.Есть ли быстрый способ добиться этого?
Я изменил свой исходный кадр данных.Вывод будет:
df = pd.DataFrame({'chr_key' : [1, 1, 1, 2, 2, 3, 4], 'position' : [123, 124, 125, 126, 127, 128, 129], 'hit_count' : [20, 19, 18, 17, 16, 15, 14], 'strand': ['R', 'R', 'F', 'R', 'F', 'F', 'F']})
, поскольку их всего 3 chr_key == 1
, поэтому, когда дело доходит до третьей строки, поскольку в ней нет строки сравнения i + 1, значение strand
по умолчанию будет равноF