Как быстро вставить строку в датафрейм? - PullRequest
1 голос
/ 01 октября 2019

Я хочу вставить данные в первую строку кадра данных и удалить последнюю строку из кадра данных. Мне нужно делать эту операцию много раз.

Из этих двух вопросов. Q1 Q2 У меня есть такой код:

targetDF = pd.concat([sourceDF[sourceDF.index == targetDate], targetDF[:]])
targetDF.drop(targetDF.tail(1).index, inplace = True)

Это будет сделано из:

                Volume     Today      Lag1      Lag2      Lag3      Lag4      Lag5  Direction
2000-05-22  23956801.0  0.338821  1.724165 -0.343514  3.191463  0.714161  0.000000        1.0
2000-05-19  50544773.0 -1.013452  0.338821  1.724165 -0.343514  3.191463  0.714161       -1.0
...                ...       ...       ...       ...       ...       ...       ...        ...
2000-01-04   3194413.0  7.397314  5.187307 -1.977310 -0.840434 -2.458993  1.666694        1.0

[100 rows x 8 columns]

Кому:

                Volume     Today      Lag1      Lag2      Lag3      Lag4      Lag5  Direction
2000-05-23  21822575.0  1.724165 -0.343514  3.191463  0.714161  0.000000 -1.754358        1.0
2000-05-22  23956801.0  0.338821  1.724165 -0.343514  3.191463  0.714161  0.000000        1.0
...                ...       ...       ...       ...       ...       ...       ...        ...
2000-01-05   6058531.0  5.187307 -1.977310 -0.840434 -2.458993  1.666694  1.408448        1.0

[100 rows x 8 columns]

Из ответа на вопрос 1 pd.concat() является обширным. Поэтому я хотел бы спросить, есть ли лучший способ сделать это?

Большое спасибо.

Ответы [ 2 ]

1 голос
/ 01 октября 2019

Обратите внимание, что в Pandas физический порядок строк не так важен и может быть изменен с помощью sort_index или sort_values ​​.

Также обратите внимание, что каждая строка идентифицируется индексом и, как и в базе данных, она должна быть уникальной в текущем фрейме данных.

Итак, моя концепция такова:

  • Если вы хотите добавить новую строку, добавьте ее со значением индекса на один больше, чем максимальный индекс, используя append (в конце).
  • Если вы хотите удалить строку, удалите строку с наименьшим значением индекса (с начала).

Таким образом, порядок строк противоположен вашему желанию, но вы все равно можете обрабатывать их в «вашем» порядке (от только что вставленной строки до «самой старой» строки). .

Просто получить доступ к строкам в в обратном порядке , чем в индексе. Что-то вроде:

df.loc[::-1]
1 голос
/ 01 октября 2019

pandas.concat

Изменение того, что вы делали

targetDF = pd.concat([sourceDF.loc[[targetDate]], targetDF.iloc[:-1]])

pandas.DataFrame.append

Или используйте DataFrame метод

targetDF = sourceDF.loc[[targetDate]].append(targetDF.iloc[:-1])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...