Питон - панды разного размера, декартово произведение, каждый пробег - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть два кадра данных в python, и я хочу сделать из них декартово произведение.Для этого я использовал слияние с той же ключевой командой, как указано ниже:

print("dna", df_genes.size)
print("names",df_citations.size)
df_genes['key'] = 0
df_citations['key'] = 0
df = pd.merge(df_genes, df_citations, on='key').drop('key', axis = 1)

print("df before",df.size)

Однако при каждом запуске я получаю разный размер для декартового произведения - и это никогда не умножение первых двух кадров данных.Например, в последнем прогоне я получил:

('dna', 7437309)
('names', 165)
('df before', 490862394)

(Как видите, разница довольно большая)

Это звучит странно для меня.У кого-нибудь есть подсказка?

1 Ответ

0 голосов
/ 27 ноября 2018

Не используйте .size, который показывает количество строк и столбцов.Чтобы проверить работоспособность вашего декартового произведения, вы ожидаете, что если df1 имеет 5 строк, а df2 имеет 3 строки, то декартово произведение даст 15 строк.Это вы можете проверить, заменив .size на .shape или .shape [0]

В вашем случае:

print("dna", df_genes.shape[0])
print("names", df_citations.shape[0])
df_genes['key'] = 0
df_citations['key'] = 0
df = pd.merge(df_genes, df_citations, on='key').drop('key', axis = 1)

print("df before", df.shape[0])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...