Почему Pandas concat не выполняет копирование, когда один из фреймов данных пуст?Python

Программы на Python
Anonymous
 Почему Pandas concat не выполняет копирование, когда один из фреймов данных пуст?

Сообщение Anonymous »

Рассмотрим этот пример:

Код: Выделить всё

import pandas as pd
df_part1 = pd.DataFrame()
df_part2 = pd.DataFrame({'A': [1,1], 'B': [3,4]})
df_concat_out = pd.concat([df_part1, df_part2])
print("id(df_part2.values) == id(df_concat_out.values):", id(df_part2.values) == id(df_concat_out.values))

df_part2.B *= -1
df_concat_out_2 = pd.concat([df_concat_out, df_part2])
print(df_concat_out_2)
Вывод:

Код: Выделить всё

id(df_part2.values) == id(df_concat_out.values): True

A  B
0  1 -3
1  1 -4
0  1 -3
1  1 -4
Это ожидаемое поведение? По крайней мере от меня этого не ожидается. Значение параметра copy по умолчанию для concat должно быть True, но в данном случае явно не выполняется копирование. Почему? Я думаю, он пытается быть умным, и копия здесь не обязательно кажется необходимой, но я думаю, что этот пример показывает, что это определенно необходимо.
Это на пандах 2.1.4. Самую последнюю версию не проверял.

Подробнее здесь: https://stackoverflow.com/questions/797 ... s-is-empty

Вернуться в «Python»