#python #pandas
Вопрос:
У меня есть фрейм данных следующим образом:
df1 = pd.DataFrame({'id': ['1a', '2b', '3c'], 'name': ['Anna', 'Peter', 'John'], 'year': [1999, 2001, 1993]})
Я хочу создать новые данные путем случайной перестановки значений в каждом столбце, но для столбца id
мне также нужно добавить случайную букву в конце значений, а затем добавить новые данные к существующим df1
следующим образом:
df1 = pd.DataFrame({'id': ['1a', '2b', '3c', '2by', '1ao', '1az', '3cc'], 'name': ['Anna', 'Peter', 'John', 'John', 'Peter', 'Anna', 'Anna'], 'year': [1999, 2001, 1993, 1999, 1999, 2001, 2001]})
Кто-нибудь может мне помочь, пожалуйста? Большое вам спасибо.
Комментарии:
1. хейя, не могли бы вы сделать заголовок вопроса немного более описательным, пожалуйста? это может помочь другим, которые сами сталкиваются с подобным вопросом и должны найти этот
2. Надеюсь, что новое название поможет 🙂
Ответ №1:
Используйте DataFrame.sample
и добавляйте случайные буквы с помощью numpy.random.choice
:
import string
N = 5
df2 = (df1.sample(n=N, replace=True)
.assign(id =lambda x:x['id'] np.random.choice(list(string.ascii_letters),size=N)))
df1 = df1.append(df2, ignore_index=True)
print (df1)
id name year
0 1a Anna 1999
1 2b Peter 2001
2 3c John 1993
3 1aY Anna 1999
4 3cp John 1993
5 3cE John 1993
6 2bz Peter 2001
7 3cu John 1993
Комментарии:
1. Это работает. Большое вам спасибо 🙂