Pandas применяет функцию, которая ведет себя по-разному в зависимости от размера ввода?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Pandas применяет функцию, которая ведет себя по-разному в зависимости от размера ввода?

Сообщение Anonymous »

У меня есть функция, которая отлично работает с крошечным кадром данных Pandas и возвращает корректировки, как и ожидалось,
но когда я применяю ее к нетестовому кадру данных, который представляет собой лишь небольшой df (300 x 20), он полностью запутался.
Используя приведенный ниже пример в качестве примера, он заполнит столбцы 3–7 одним и тем же списком значений для всех строк в каждом соответствующем столбце...
Чтобы еще больше запутать, когда я удаляю код из функции и запускаю его как часть одного файла, ожидаемые результаты достигаются для нетестового фрейма данных...
Может ли кто-нибудь подсказать, что здесь может происходить и почему поведение может отличаться? / что я меняю.
Я предоставляю здесь код для развлечения
def test_populate_columns_from_Key_Value_String():

starting_df = pd.DataFrame(
{
"Names": ["Sarah", "John"],
"Relations": [
"has parent: Maggie, is parent of: Tom, is parent of: Grace, is parent of: Bart, is related to: Grandpa Simpson, is hated by: Joseph",
"is friends with: Tracey, has parent: Greg",
],
"has parent": [[], []],
"is parent of": [[], []],
"is related to": [[], []],
"is hated by": [[], []],
"is friends with": [[], []],
}
)

desire_df = pd.DataFrame(
{
"Names": ["Sarah", "John"],
"Relations": [
"has parent: Maggie, is parent of: Tom, is parent of: Grace, is parent of: Bart, is related to: Grandpa Simpson, is hated by: Joseph",
"is friends with: Tracey, has parent: Greg",
],
"has parent": [["Maggie"], ["Greg"]],
"is parent of": [["Tom", "Grace", "Bart"], []],
"is related to": [["Grandpa Simpson"], []],
"is hated by": [["Joseph"], []],
"is friends with": [[], ["Tracey"]],
}
)

starting_df.apply(
populate_columns_from_Key_Value_String, axis=1, args=("Relations",)
)

print(starting_df)
assert desire_df.loc[0, "has parent"] == starting_df.loc[0, "has parent"]
assert starting_df.loc[0, "is hated by"] == ["Joseph"]
assert starting_df.loc[1, "is friends with"] == ["Tracey"]
assert starting_df.loc[0, "is parent of"] == desire_df.loc[0, "is parent of"]

def populate_columns_from_Key_Value_String(
row: pd.Series, column_to_extract_from="Column_name_with_Relational_String"
):
string_to_extract_values_from = row[column_to_extract_from]
if isinstance(string_to_extract_values_from, str):
for key_value_pair in string_to_extract_values_from.split(","):
if isinstance(row[key_value_pair.split(":")[0].strip()], list):
row[key_value_pair.split(":")[0].strip()].append(
key_value_pair.split(":")[1].strip()
)


Подробнее здесь: https://stackoverflow.com/questions/790 ... input-size
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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