Структура данных списка в Python

#python #pandas #numpy

#python #pandas #numpy

Вопрос:

Находясь в цикле for, я попытался добавить значения, запрошенные из фрейма данных в Pandas. Я использовал что-то вроде:

 n = df.loc[(df["B"] > 50) amp; (df["C"] == 900), "A"]
my_list.append(n)
print("my_list is", my_list)
 

и он напечатал:

 my_list is [21.5, 23.5, 24.5, 12    24.5
Name: b, dtype: float64] 
 

Кажется, что все значения в списке, кроме последнего, имеют один и тот же формат, но последнее значение имеет другой формат, т. е.., 24.5 Name: b, dtype: float64 . Вероятно, это было связано с тем, что я запросил последнее значение, используя метод, отличный от других значений.

Вывод выглядит следующим образом:

 [21.5, 23.5, 24.5, [24.5]]  
 

Как я могу сделать значения в том же формате, чтобы выходные данные выглядели так [21.5, 23.5, 24.5, 24.5] ?


Редактировать:

     Timestamp               X   Y   B   C       Type    Id
0   2000-10-26 10:08:27.060 18  14  0.0 24.5    medium  18
1   2000-10-26 10:39:24.310 18  13  1.0 24.0    low     18
2   2000-10-26 11:50:48.190 18  14  1.0 23.5    medium  18
 

Комментарии:

1. потому что последнее значение в вашем списке, похоже, является фреймом данных или, скорее, серией. Бесполезно говорить о «форматах». Ваш список содержит объекты . Кажется, что первые три объекта имеют float тип, и опять же, последний, похоже, имеет pd.Series тип.

2. @nil можем ли мы увидеть данные?

3. Привет @juanpa.arrivillaga Я пробовал n.astype('float') , n.to_numeric pd.to_numeric(n).astype('float') и ничего не изменилось

4. @nilsinelabore конечно, нет, все они возвращаются pd.Series (или, если используются в фрейме данных, a pd.DataFrame ). Вы, вероятно, хотите что-то вроде n = df.loc[(df["B"] > 50) amp; (df["C"] == 900), "A"].item() Или если вы ожидаете более одного элемента, просто подайте в суд my_list.extend(n.tolist())

5. @juanpa.arrivillaga Спасибо, это сработало 🙂 Возможно, я принял ваше решение, если вы хотите ответить на него ниже