Методы комбинирования с использованием Python - PullRequest
0 голосов
/ 27 июня 2018

Я новичок в Python и пытаюсь решить проблему с двумя разными наборами данных. Я создал два фрейма данных, s и c, используя pandas.read_csv

S

  Spread   per1   per2   per3          acc
0  4.50%  1.26%  0.35%  0.50%        0.60%
1  4.45%  1.29%  0.35%  0.50%        0.60%
2  4.40%  1.31%  0.35%  0.50%        0.60%
3  4.35%  1.34%  0.35%  0.50%        0.60%
4  4.30%  1.37%  0.35%  0.50%        0.60%

с

     Cer     OO
0  1.00%  0.65%
1  1.05%  0.68%
2  1.10%  0.71%
3  1.15%  0.73%
4  1.20%  0.76%

Итак, я бы хотел, чтобы для каждой комбинации Cer и OO из c я хотел бы заполнить все записи из s. (Не уверен, что это хороший способ объяснить это). Пожалуйста, смотрите ниже, например

    Spread  per1    per2    per3    acc     Cer     OO
0   4.50%   1.26%   0.35%   0.50%   0.60%   1.00%   0.65%
1   4.45%   1.29%   0.35%   0.50%   0.60%   1.00%   0.65%
2   4.40%   1.31%   0.35%   0.50%   0.60%   1.00%   0.65%
3   4.35%   1.34%   0.35%   0.50%   0.60%   1.00%   0.65%
4   4.30%   1.37%   0.35%   0.50%   0.60%   1.00%   0.65%
5   4.50%   1.26%   0.35%   0.50%   0.60%   1.05%   0.68%
6   4.45%   1.29%   0.35%   0.50%   0.60%   1.05%   0.68%
7   4.40%   1.31%   0.35%   0.50%   0.60%   1.05%   0.68%
8   4.35%   1.34%   0.35%   0.50%   0.60%   1.05%   0.68%
9   4.30%   1.37%   0.35%   0.50%   0.60%   1.05%   0.68%

Я читал, что панды и / или itertools могут помочь мне сделать такой анализ? Путаница заключается в попытке создать все записи из s для каждой комбинации двух полей из фрейма данных c .

Опять же, любая помощь с документацией и / или пониманием будет отличной. Спасибо

1 Ответ

0 голосов
/ 28 июня 2018

Используйте декартово объединение с merge и временным ключом:

S.assign(key=1).merge(c.assign(key=1), on='key').drop('key', axis=1)

Выход:

   Spread   per1   per2   per3    acc    Cer     OO
0   4.50%  1.26%  0.35%  0.50%  0.60%  1.00%  0.65%
1   4.50%  1.26%  0.35%  0.50%  0.60%  1.05%  0.68%
2   4.50%  1.26%  0.35%  0.50%  0.60%  1.10%  0.71%
3   4.50%  1.26%  0.35%  0.50%  0.60%  1.15%  0.73%
4   4.50%  1.26%  0.35%  0.50%  0.60%  1.20%  0.76%
5   4.45%  1.29%  0.35%  0.50%  0.60%  1.00%  0.65%
6   4.45%  1.29%  0.35%  0.50%  0.60%  1.05%  0.68%
7   4.45%  1.29%  0.35%  0.50%  0.60%  1.10%  0.71%
8   4.45%  1.29%  0.35%  0.50%  0.60%  1.15%  0.73%
9   4.45%  1.29%  0.35%  0.50%  0.60%  1.20%  0.76%
10  4.40%  1.31%  0.35%  0.50%  0.60%  1.00%  0.65%
11  4.40%  1.31%  0.35%  0.50%  0.60%  1.05%  0.68%
12  4.40%  1.31%  0.35%  0.50%  0.60%  1.10%  0.71%
13  4.40%  1.31%  0.35%  0.50%  0.60%  1.15%  0.73%
14  4.40%  1.31%  0.35%  0.50%  0.60%  1.20%  0.76%
15  4.35%  1.34%  0.35%  0.50%  0.60%  1.00%  0.65%
16  4.35%  1.34%  0.35%  0.50%  0.60%  1.05%  0.68%
17  4.35%  1.34%  0.35%  0.50%  0.60%  1.10%  0.71%
18  4.35%  1.34%  0.35%  0.50%  0.60%  1.15%  0.73%
19  4.35%  1.34%  0.35%  0.50%  0.60%  1.20%  0.76%
20  4.30%  1.37%  0.35%  0.50%  0.60%  1.00%  0.65%
21  4.30%  1.37%  0.35%  0.50%  0.60%  1.05%  0.68%
22  4.30%  1.37%  0.35%  0.50%  0.60%  1.10%  0.71%
23  4.30%  1.37%  0.35%  0.50%  0.60%  1.15%  0.73%
24  4.30%  1.37%  0.35%  0.50%  0.60%  1.20%  0.76%
...