Создание пустого фрейма данных и добавление в него строк - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь создать пустой фрейм данных с пандами, который имеет два столбца (['originating_number', 'terminating_number']. После того, как я создаю этот новый пустой фрейм данных, моя цель состоит в том, чтобы перебрать другой фрейм данных, который у меня естьдобавление строки в этот новый пустой фрейм данных, если соблюдены определенные критерии. К сожалению, я сталкиваюсь с ошибкой либо с инициализацией пустого фрейма данных, либо с добавлением к нему. Вот мой текущий код (где записи представляют мой другой фрейм данных, которыйЯ работаю с):

    verified_frame = pd.DataFrame(columns=['originating_number_2', 'terminating_number_2'])

    for index, row in records.iterrows():
        originating_number_length = len(str(row['originating_number']))
        terminating_number_length = len(str(row['terminating_number']))

        if originating_number_length == 10 and terminating_number_length == 10:

            temp_df = pd.DataFrame([row['originating_number'],row['terminating_number']])
            verified_frame.append(temp_df)

Однако, когда я устанавливаю трассировку после этого кода (в блоке if), я вижу, что мой temp_df имеет правильные значения, но когда я смотрю наVerified_frame, значения не были добавлены.

Спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Если вам нужно только отфильтровать строки из исходного фрейма на основе условия, вы можете сделать это напрямую, а не выполнять итерацию по каждой строке:

verified_frame  = records[(records['originating_number'] == 10) & (records['terminating_number'] == 10)]['originating_number', 'terminating_number']
verified_frame.columns = ['originating_number_2', 'terminating_number_2']

Итерация по строкам фрейма данных не очень эффективна ивсегда следует рассматривать как последний вариант.

0 голосов
/ 20 февраля 2019

Я думаю, что вы почти у цели, вам просто нужно присвоить новый verfied_frame его добавленной самости.Попробуйте это:

verified_frame = pd.DataFrame(columns=['originating_number_2', 'terminating_number_2'])

for index, row in records.iterrows():
    originating_number_length = len(str(row['originating_number']))
    terminating_number_length = len(str(row['terminating_number']))

    if originating_number_length == 10 and terminating_number_length == 10:

        temp_df = pd.DataFrame([row['originating_number'],row['terminating_number']])

# reassign verfied_frame here
        verified_frame = verified_frame.append(temp_df)

Вот документация, подтверждающая это https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.append.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...