Как повторить итерацию для фрейма данных pandas? - PullRequest
1 голос
/ 16 марта 2020

Очень плохо знаком с Python, у меня большой фрейм данных, и я пытаюсь отображать 5 строк необработанных данных каждый раз, когда пользователь вводит = "да". Я хочу, чтобы данные развивались на 5 строк каждый раз, когда пользователь входные данные yes.

Я пытался использовать оба .ilo c и .iterrows, но я не могу понять, как заставить вывод работать дальше строк, определенных в ilo c.

Это то, что я пробовал до сих пор.

def raw_data(df):
    """
    Asks user if they want to see 5 lines of raw data.
    Then returns 5 lines of raw data if user inputs `yes`. Iterates until user response with a `no`
    """

    data = df 
    while True:
        answer = input('Would you like to see 5 lines of raw data? Enter yes or no: ')
        if answer.lower() == 'yes':
            print(data.iloc[:5])
            data += 5
        else:
            break

Я пытался использовать data += 5 для прогресса, но он вызывает «ValueError: Невозможно добавить целое значение в Timestamp без freq.»

Я нахожусь в тупике, в каком направлении go в следующем. Помощь очень ценится,

Ответы [ 2 ]

1 голос
/ 16 марта 2020

DataFrame.iloc принимает в качестве первого индекса индексы строк, а в качестве второго - индексы столбцов, которые вы хотите показать.

Итак, если вы хотите показать только блок из 5 строк, и все столбцы используйте:

df.iloc[idx:idx+5, :]

Полный пример:

def raw_data(df):
    """
    Asks user if they want to see 5 lines of raw data.
    Then returns 5 lines of raw data if user inputs `yes`. Iterates until user response with a `no`
    """

    idx = 0
    while True:
        answer = input('Would you like to see 5 lines of raw data? Enter yes or no: ')
        if answer.lower() == 'yes':
            print(df.iloc[idx:idx+5, :])
            idx += 5
        else:
            break

См. Также https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.iloc.html

0 голосов
/ 16 марта 2020

Это работает для меня, если я хочу пять строк, затем еще пять строк, и на ...

import pandas as pd

df = pd.read_csv('~/Documents/python/api.csv')

def raw_data(df):
    """
    Asks user if they want to see 5 lines of raw data.
    Then returns 5 lines of raw data if user inputs `yes`. Iterates until user response with a `no`
    """
    position = 5
    data = df 
    while True:
        answer = input('Would you like to see 5 lines of raw data? Enter yes/y or no/n: ')
        if (answer.lower() == 'yes') | (answer.lower() == 'y'):
            print(data.iloc[position-5:position])
            position += 5
        else:
            break

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