Существует два разных направления, связанных с Вопросом:
1) Как сделать строчные имена столбцов в DataFrame.
Вот как ты будешь делать.
>>> df.columns = df.columns.str.lower()
>>> df
my_col <-- Column name changed to lowercase
0 ONE
1 Two
2 Three
3 Four
2) Как уменьшить значения столбцов в кадре данных. Таким образом, для перевода имен столбцов в нижний регистр вам не нужен цикл. Просто сделайте, как показано ниже ..
>>> df.MY_COL.str.lower()
0 one
1 two
2 three
3 four
Name: MY_COL, dtype: object
ИЛИ
>>> df['MY_COL'].str.lower()
0 one
1 two
2 three
3 four
Name: MY_COL, dtype: object
Пример DataFrame:
>>> df
MY_COL
0 ONE
1 Two
2 Three
3 Four
Однако запрос о []
, Часть в квадратных скобках называется списком Понимание Понимания списков обеспечивают краткий способ создания списков, см. Doc Listcomp
Я использую generatedata. Это - сценарий PHP с открытым исходным кодом, который может генерировать все виды фиктивных данных.
Откровенно говоря, я не уверен, почему это необходимо. Ваши dev/test среды должны быть частными, позади Вашего брандмауэра, и не доступными от сети.
Вашим разработчикам нужно доверять, и у Вас есть обращение в суд против них, если им не удается соответствовать Вашему доверию.
Я думаю, что реальный вопрос должен быть, "Я должен скремблировать данные?", и ответ является (в моем уме) 'нет'.
Если Вы отправляете его удаленный по некоторым причинам, или у Вас должны быть свои доступные для сети среды, или если бы Вы параноики, я реализовал бы случайный переключатель. Вместо того, чтобы создавать временную таблицу, выполните переключатели между каждым местоположением и случайной строкой в таблице, подкачав одну часть данных за один раз.
Конечным результатом будет таблица со всем одинаковым данные, но с ним случайным образом реорганизованный. Это должно также быть быстрее, чем Ваша временная таблица, я верю.
Должно быть достаточно просто реализовать Перестановку Фишера-Йетса в SQL... или по крайней мере в консольном приложении, которое читает дб и пишет в цель.
Редактирование (2): неподготовленный ответ в T-SQL:
объявите, что @name varchar (50) устанавливают @name = (ВЫБЕРИТЕ lastName от человека где personID = (случайный идентификационный номер), человек Обновления установил lastname = @name ГДЕ personID = (идентификатор человека текущей строки)
Перенесите это в цикл и следуйте инструкциям Фишера-Йетса для изменения случайных ограничений значения, и Вы будете установлены.
Почему не только используют своего рода Случайный Генератор Имени?
При выполнении чего-то как этот я обычно пишу небольшую программу, что первые загрузки много имен и фамилий в двух массивах, и затем просто обновляют базу данных с помощью случайного имени/фамилии от массивов. Это работает действительно быстро даже на очень большие наборы данных (200.000 + записи)
Очень простое решение было бы к ROT13 текстом.
Лучший вопрос может состоять в том, почему Вы чувствуете потребность скремблировать данные? Если у Вас есть ключ шифрования, Вы могли бы также рассмотреть выполнение текста через DES или AES или подобный. Thos имел бы потенциальные проблемы производительности, как бы то ни было.
Вместо этого используйте временную таблицу, и запрос будет очень быстрым. Я только что побежал по 60К строк за 4 секунды. Я буду использовать этот в будущем.
DECLARE TABLE #Names
(Id int IDENTITY(1,1),[Name] varchar(100))
/ * Зашифруйте фамилии (выберите другую фамилию случайным образом) * /
INSERT #Names
SELECT LastName
FROM Customer
ORDER BY NEWID();
WITH [Customer ORDERED BY ROWID] AS
(SELECT ROW_NUMBER() OVER (ORDER BY NEWID()) AS ROWID, LastName FROM Customer)
UPDATE [Customer ORDERED BY ROWID]
SET LastName=(SELECT [Name] FROM #Names WHERE ROWID=Id)
DROP TABLE #Names