У меня есть два кадра данных 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.
@ITWorld Я уже видел это, и это не то, что я пытаюсь сделать ("Я не хочу создавать новый df...").
«чтобы я мог обрабатывать их значения», что вы планируете делать?
@coldspeed Затем значения используются для построения символьных уравнений с помощью sympy.
Хорошо, и вы пытаетесь связать два ряда вместе?
@coldspeed Разве это не ясно из вопроса? ☺
Нет, не совсем. А может я просто устал. Во всяком случае, я ожидал увидеть что-то вроде «Я пытаюсь сжать строки вместе», но все, что я вижу, это «сжать два кадра данных», и я не был уверен, что вы имели в виду, когда говорили «типичное поведение zip».
@coldspeed Или, может быть, я. В любом случае, не стесняйтесь редактировать его, чтобы сделать его более понятным, если он вводит в заблуждение.






Вы можете конвертировать 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)
Возможный дубликат Заархивируйте кадры данных pandas в новый фрейм данных