Генерация кортежей из элементов строки DataFrame - PullRequest
0 голосов
/ 16 декабря 2018

Я надеюсь, что это не я делаю что-то глупое программно.

У меня есть один ряд Dataframe с числовыми значениями:

df1                          A            B            C          D

 01-02-2003T00:00:00         5.0         7.0          2.0        4.0   ....

Я хочу создать список кортежей на основезначения в кадре данных.Я делаю следующее:

my_array = numpy.array(df1)

, что дает мне:

           0            1            2          3

 0        5.0          7.0          2.0        4.0   ....

Тогда я делаю:

 my_tuple_of_tuples =  tuple((0.5*x, 1.5*x) for x in my_array)

Я ожидаю этого:

((2.5,7.5),(3.5,10.5),(1.0,3.0),(2.0,6.0))

но я получаю это:

((2.5,3.5,1.0,2.0),(7.5,10.5,3.0,6.0)) 

Что я делаю не так?

1 Ответ

0 голосов
/ 16 декабря 2018

Просто индексируйте первую строку, тогда ваш код должен работать:

tup = tuple((0.5 * x, 1.5 * x) for x in df.values.tolist()[0])
print(tup)
# ((2.5, 7.5), (3.5, 10.5), (1.0, 3.0), (2.0, 6.0))

Это работает, потому что

df.values.tolist()[0]
# [5.0, 7.0, 2.0, 4.0]

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


Если вам это нужно для работы с несколькими строками, вы можете преобразовать это во вложенный цикл или использовать chain.from_iterable.

from itertools import chain
tup = tuple(
    (0.5 * x, 1.5 * x) for x in chain.from_iterable(df.values.tolist()))
print(tup)
# ((2.5, 7.5), (3.5, 10.5), (1.0, 3.0), (2.0, 6.0))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...