новый кадр данных в операторе if.питон - PullRequest
0 голосов
/ 05 марта 2019

Вот часть кода, с которой у меня возникают проблемы:

for x in range(len(df['Days'])):
    if df['Days'][x]>0 and df['Days'][x]<=30: 
        b = df['Days'][x]
b

Вывод, который я получаю, равен b = 14, что является последним значением, в котором оператор if хранится в столбце кадра данных. Я пытаюсь получить ВСЕ значения столбца, в котором содержится оператор if, для удержания в «b», а не только в последнем значении.

Ответы [ 2 ]

1 голос
/ 05 марта 2019

Что вы хотите сделать, это составить список и добавить к нему b.

my_vals = []
for x in range(len(df['Days'])):
    if df['Days'][x]>0 and df['Days'][x]<=30: 
        b = df['Days'][x]
        my_vals.append(b)
my_vals

В вашем коде вы меняете b при каждой итерации, поэтому в нем хранятся только самые последние значения. В будущем, когда вы пытаетесь сохранить несколько значений, делайте это в другом типе данных.

0 голосов
/ 05 марта 2019

Вы также можете использовать функцию фильтрации панд и использовать

values = df.loc[(df['Days'] >= 0) & (df['Days'] <= 30)]

Если вы хотите, чтобы значения представляли собой серии вместо DataFrame, используйте

values_series = values['Days']

Если вы хотите, чтобы значения представляли собой список вместо серии, используйте

values_list = list(values_series)

...