#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)']