будет еще быстрее. Спасибо за указание на меня
помощь в понимании назначения переменных, указателей, ...
Следующее воспроизводимо.
import pandas as pd
df = pd.DataFrame({
'listData': [
['c', 'f', 'd', 'a', 'e', 'b'],
[5, 2, 1, 4, 3]
]})
df['listDataSort'] = df['listData']
дает:
listData listDataSort
0 [c, f, d, a, e, b] [c, f, d, a, e, b]
1 [5, 2, 1, 4, 3] [5, 2, 1, 4, 3]
Если я только хочу отсортировать списки вlistDataSort
столбец, я мог бы попробовать:
df['listDataSort'].apply(lambda l: l.sort())
df
Однако это сортирует списки в обоих столбцах на месте.
listData listDataSort
0 [a, b, c, d, e, f] [a, b, c, d, e, f]
1 [1, 2, 3, 4, 5] [1, 2, 3, 4, 5]
Я могу исправить это, выполнив:
df = pd.DataFrame({
'listData': [
['c', 'f', 'd', 'a', 'e', 'b'],
[5, 2, 1, 4, 3]
]})
df['listDataSort'] = df['listData'].apply(sorted)
давая:
listData listDataSort
0 [c, f, d, a, e, b] [a, b, c, d, e, f]
1 [5, 2, 1, 4, 3] [1, 2, 3, 4, 5]
Присвоение df другой переменной, скажем, df2 по-прежнему меняет все обратно на исходный список источников. Кроме того, как мне создать новый фрейм данных на основе существующего фрейма данных, чтобы я мог вносить изменения в новый фрейм данных без внесения тех же изменений в существующий фрейм данных?
df = pd.DataFrame({
'listData': [
['c', 'f', 'd', 'a', 'e', 'b'],
[5, 2, 1, 4, 3]
]})
df2 = df
print('\ndf\n', df)
print('\ndf2\n', df2)
df2['listDataSort'] = df2['listData']
print('\ndf\n', df)
print('\ndf2\n', df2)
df2['listDataSort'].apply(lambda l: l.sort())
print('\ndf\n', df)
print('\ndf2\n', df2)
печатает:
df
listData
0 [c, f, d, a, e, b]
1 [5, 2, 1, 4, 3]
df2
listData
0 [c, f, d, a, e, b]
1 [5, 2, 1, 4, 3]
df
listData listDataSort
0 [c, f, d, a, e, b] [c, f, d, a, e, b]
1 [5, 2, 1, 4, 3] [5, 2, 1, 4, 3]
df2
listData listDataSort
0 [c, f, d, a, e, b] [c, f, d, a, e, b]
1 [5, 2, 1, 4, 3] [5, 2, 1, 4, 3]
df
listData listDataSort
0 [a, b, c, d, e, f] [a, b, c, d, e, f]
1 [1, 2, 3, 4, 5] [1, 2, 3, 4, 5]
df2
listData listDataSort
0 [a, b, c, d, e, f] [a, b, c, d, e, f]
1 [1, 2, 3, 4, 5] [1, 2, 3, 4, 5]
также:
df = pd.DataFrame({
'listData': [
['c', 'f', 'd', 'a', 'e', 'b'],
[5, 2, 1, 4, 3]
]})
print('\ndf\n', df)
df3 = df
df3['listDataSort'] = df3['listData'].apply(sorted)
print('\ndf\n', df)
print('\ndf3\n', df3)
печатает:
df
listData
0 [c, f, d, a, e, b]
1 [5, 2, 1, 4, 3]
df
listData listDataSort
0 [c, f, d, a, e, b] [a, b, c, d, e, f]
1 [5, 2, 1, 4, 3] [1, 2, 3, 4, 5]
df3
listData listDataSort
0 [c, f, d, a, e, b] [a, b, c, d, e, f]
1 [5, 2, 1, 4, 3] [1, 2, 3, 4, 5]