Создание списка из серии pandas

#python-3.x #openfoam

#python-3.x #openfoam

Вопрос:

Нажмите здесь для изображенияЯ пытаюсь создать список из 3 разных серий, который будет иметь форму «({A} {B} {C})», где A обозначает 1-й элемент из серии 1, B — для 1-го элемента из серии 2, C — для 1-го элемента из серии 3, и таким образом он должен создать список, содержащий 600 элементов.

 List 1              List 2           List 3
u_p0 1              v_p0 2           w_p0 7
u_p1 21             v_p1 11          w_p1 45
u_p2 32             v_p2 25          w_p2 32
u_p3 45             v_p3 76          w_p3 49
...                 ....             ....
u_p599 56           v_p599 78        w_599 98
  

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

     (1 2 7)
    (21 11 45)
    (32 25 32)
    (45 76 49)
.....
  

Это 3 серии, которые я создал из фрейма данных

 r1=turb_1.iloc[qw1] #List1
r2=turb_1.iloc[qw2] #List2
r3=turb_1.iloc[qw3] #List3
  

Изображение серииДля вывода я думаю, что метод форматированной строки python будет полезен, но я совершенно не уверен, как поступить.

 turb_3= ["({A} {B} {C})".format(A=i,B=j,C=k) for i in r1 for j in r2 for k in r3] 
  

Любая помощь будет полезна.

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

1. Можете ли вы опубликовать образец фрейма данных? Кроме того, является ли ожидаемый результат списком строк или кортежей?

2. @Chris Спасибо за ваш ответ. Я прикрепляю изображение основного фрейма данных, который содержит все. Список 3, который я опубликовал выше, относится к 0 временному шагу, но мне нужно сделать то же самое и для остальных временных шагов. Вы можете найти изображение фрейма данных во вложении к сообщению выше. Это нормально?

3. Пожалуйста, воздержитесь от загрузки изображения. Вы можете попробовать опубликовать результат print(your_data[[qw1, qw2, qw3]].head(5)) и предоставить ожидаемый результат на основе образца 😉

4. @Chris Я совсем новый пользователь Python, я попробовал команду, которую вы только что упомянули в предыдущем комментарии, но она показывает некоторую ошибку. Мне нужен список строк, и если вам что-то потребуется, кроме этого, просто спросите меня здесь. 🙂

5. Пожалуйста, взгляните на ответ, который я опубликовал. Хотя вам придется изменить имена переменных, я надеюсь, вы поняли суть 😉

Ответ №1:

Используйте pandas.DataFrame.itertuples с str.format :

 # Sample data
print(df)
   col1  col2  col3
0     1     2     7
1    21    11    45
2    32    25    32
3    45    76    49

fmt = "({} {} {})"

[fmt.format(*tup) for tup in df[["col1", "col2", "col3"]].itertuples(False, None)]
  

Вывод:

 ['(1 2 7)', '(21 11 45)', '(32 25 32)', '(45 76 49)']