If you do not want to write by hand the alphabet, you can do:
import pandas as pd
df = {'a': (1,2,3)}
dd = pd.DataFrame(df)
numcopies = 4 #how many copies you want of the original column named 'a'
names = [chr(ord('a') + i) for i in range(1, numcopies+1)]
for n in names:
dd[n] = dd['a']
chr() and ord() are built-in functions which comes in handy to generate sequence of letters / characters.
EDIT after comments
A more concise version of it (with no need to store the names in a variable) is:
for i in range(1, numcopies+1):
dd[chr(ord('a') + i)] = dd['a']
EDIT: column names with more than one character
If you want to have a lot of copied columns, have a look at this answer. It is a good way to produce sequences of strings longer that 1 character with alphabet letters only based on an input number (so you do not end with strange symbols as name column).
You can do:
for i in range(1, numcopies+1):
dd[colnum_string(i)] = dd['a']
where column_string
is the function defined in the link above.