Как заархивировать два фрейма данных pandas

У меня есть два кадра данных Pandas, подобные приведенным ниже (пример кода указан здесь).

                   A         B         C         D
2000-01-01  0.298399 -0.738440 -0.505438  0.324951
2000-01-02  1.300686 -0.938543 -1.850977  0.868467

и

                   A         B         C         D
2000-01-03  0.328032  0.325845 -0.289175  0.393732
2000-01-04  0.091853 -1.450642 -0.544152  1.073248

и я хотел бы их zip, чтобы я мог обрабатывать их значения. Чтобы уточнить, я пытаюсь взять две строки за раз — застегивая соответствующие строки вместе. Я не хочу создавать новый df, если только это не будет более эффективным.


Я сделал первое, что пришло в голову, т.

for i, (x, y) in enumerate(zip(df1, df2)):
    print(i, x, y)

и ожидал получить что-то вроде:

0 (0.298399 -0.738440 -0.505438  0.324951) (0.328032  0.325845 -0.289175  0.393732)
1 (1.300686 -0.938543 -1.850977  0.868467) (0.091853 -1.450642 -0.544152  1.073248)

но то, что я получил, было:

0 A A
1 B B

Как можно получить поведение типичныйzip при работе с фреймами данных?

Surprisingly, I could not find a duplicate for my question since both this and this are asking something different.

Возможный дубликат Заархивируйте кадры данных pandas в новый фрейм данных

IT World 23.01.2019 10:15

@ITWorld Я уже видел это, и это не то, что я пытаюсь сделать ("Я не хочу создавать новый df...").

Ma0 23.01.2019 10:16

«чтобы я мог обрабатывать их значения», что вы планируете делать?

cs95 23.01.2019 10:18

@coldspeed Затем значения используются для построения символьных уравнений с помощью sympy.

Ma0 23.01.2019 10:20

Хорошо, и вы пытаетесь связать два ряда вместе?

cs95 23.01.2019 10:20

@coldspeed Разве это не ясно из вопроса? ☺

Ma0 23.01.2019 10:21

Нет, не совсем. А может я просто устал. Во всяком случае, я ожидал увидеть что-то вроде «Я пытаюсь сжать строки вместе», но все, что я вижу, это «сжать два кадра данных», и я не был уверен, что вы имели в виду, когда говорили «типичное поведение zip».

cs95 23.01.2019 10:23

@coldspeed Или, может быть, я. В любом случае, не стесняйтесь редактировать его, чтобы сделать его более понятным, если он вводит в заблуждение.

Ma0 23.01.2019 10:25
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
4
8
5 888
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете конвертировать DataFrames в массивы numpy:

for i, (x, y) in enumerate(zip(df1.values, df2.values)):
    print(i, x, y)

Ваше решение возвращает имена столбцов, потому что это такие процессы, как:

for i, (x, y) in enumerate(zip(df1.columns, df2.columns)):
    print(i, x, y)

Другие вопросы по теме