У меня есть очень интересная проблема здесь, у меня есть набор данных, как,Заполнение dataframe столбцов на основе диапазонов, указанных в других столбцах
id, start, end
1234 200 400
1235 300 500
1236 100 900
1236 200 1200
1236 300 1400
Главная цель: Я хочу, чтобы подсчитать количество одновременных сеансов для каждого Я бы.
at 100, id:1236 has 1 session running
at 200, id:1236 has 2 sessions
at 300, id:1236 has 3 sessions
...
at 1000m id:1236 has 2 sessions
etc
Мое решение:
- Добавить столбцы от 1 до 1400 (мин и макс сеансов) для всех строк
- заполнить столбцы между начальным значением сеанса и конечного сеанса значение с 1
- затем добавьте все строки пользователя, чтобы получить приведенный выше результат.
В панд:
df = pd.read_csv(data+fileName,sep="\t",usecols=[0,1,2],names=['id','start','end'])
for i in range(0,1440):
df[str(i)]=0
print df.columns
Я мог бы добавить столбцы и думал как заполнить 1 до этих столбцов между началом и концом сеанса в каждой строке. Каждая строка может иметь разные начальные и конечные сеансы.
Любой намек поможет. Я просто пытаюсь это в пандах, но позже Мне нужно перенести его в pyspark Apache, где нет панд в рабочих узлах.
В Pandas вы также можете сделать это: 'df [(df.start <= t) & (df.end> = t)]. groupby ("id"). count() ['start']. reset_index() 'где' t' - ваше желаемое время. Просто переименуйте последний столбец соответственно. Но я не знаю, может ли это быть перенесено на pyspark. – Khris
Спасибо, @Khris, действительно, это хороший подход. здесь мне придется зацикливаться от 1 до 1400, чтобы получить результат, поэтому интенсивность процессора и мой подход выглядит интенсивным. – suppoor