Я застрял в тупике, и я использую какой-то код, который явно не-панды для того, что должно быть очень простой задачей в Pandas. Я уверен, что есть лучший способ.Pandas для дублирования одной строки, чтобы заполнить DataFrame
У меня есть DataFrame, что я буду извлекать одну строку из и создать новый DataFrame так:
>>> sampledata
float_col int_col str_col r v new_coltest eddd
0 0.1 1 a 5 1.0 0.1 -0.539783
1 0.2 2 b 5 NaN 0.2 -1.394550
2 0.2 6 None 5 NaN 0.2 0.290157
3 10.1 8 c 5 NaN 10.1 -1.799373
4 NaN -1 a 5 NaN NaN 0.694682
>>> newsampledata = sampledata[(sampledata.new_coltest == 0.1) & (sampledata.float_col == 0.1)]
>>> newsampledata
float_col int_col str_col r v new_coltest eddd
0 0.1 1 a 5 1.0 0.1 -0.539783
То, что я хотел бы сделать, это скопировать этот одну строку в «newsampledata» п раз, где n - известное целое число. В идеале конечный DataFrame с n строками перезаписывает однострочные «newsampledata», но это никоим образом не критично.
В настоящее время я использую цикл for для выполнения pd.concat
n-1 раз, чтобы получить заполнение DataFrame, но это не так быстро из-за того, что работает concat
. Я также пробовал использовать такую же тактику, используя append
, и это немного медленнее, чем concat
.
Я видел несколько других вопросов, заданных по поводу похожих предметов, но многие до сих пор не видели этот точный вопрос. Кроме того, меня отвлекают от карты/заявки из-за проблем с производительностью, но если вы видели хорошую производительность в этом методе, пожалуйста, дайте мне знать, и я тоже попробую.
ТИА
Хорошее решение, кажется, работа без проблем, и я согласен, это быстрее. Не знал, как настроить индекс, придется помнить об этом! – rajan
В предыдущей версии у вас была numpy-версия с недостатком, что dtypes, преобразованный в объект. Как это решение сравнивается с производительностью при возвращении к исходным типам данных? Может быть, numpy еще быстрее;) – Quickbeam2k1
@ Quickbeam2k1 - Я пробовал. – jezrael