#python #pandas
Вопрос:
У меня есть фрейм данных, подобный этому
Название | отметка времени |
---|---|
Строка первая | 2016-12-02 |
Строка вторая | 2016-12-02 |
… | … |
Строка двадцать пятая | 2016-12-02 |
Строка двадцать шестая | 2016-12-03 |
Строка двадцать седьмая | 2016-12-03 |
… | … |
Строка пятьдесят | 2016-12-03 |
И я хочу превратить его в такой фрейм данных, как этот
отметка времени | 1-е место | топ-2 | … | топ-25 |
---|---|---|---|---|
2016-12-02 | Строка первая | Строка вторая | … | Строка двадцать пятая |
2016-12-03 | Строка двадцать шестая | Строка двадцать седьмая | … | Строка пятьдесят |
В основном я пытаюсь сделать так, чтобы каждые 25 строк последовательно становились столбцами, и я не уверен, насколько большим будет набор данных, но у него будет по крайней мере несколько лет в качестве даты.
Я знаю, что должен использовать изменение формы или плавление, но до сих пор мне это не удавалось. Есть ли помощь в том, как с этим справиться?
Ответ №1:
Вот идея, где столбец A-ваши даты, а столбец D-ваши строки
df = pd.DataFrame({"A": ["foo", "foo", "foo", "foo", "foo",
"bar", "bar", "bar", "bar"],
"D": ["1", "this text", "text other", "What", "migrate", "Data", "5", "6 saucisses", "Okayy"]
})
# Join with a character very specific, that you won't find in your rows
# Something like '#######'
df = df.pivot_table(values='D', index=['A'], aggfunc=lambda x: '#'.join(x))
df_test = df.D.str.split(pat='#',expand=True,)