pandasのread_csvは、読み込み時によしなに列ごとに型を割り振ってくれます。
しかしながら、ユーザーidのような文字列としての数値(離散値)は数値として読み込んでしまいます。
具体的には、「00012345」のような頭にゼロが入る文字列が、数値「12345」に変換されてしまいます。
こういった場合、read_csvのオプションで型を指定して読み込む必要があります。

元データ:data1

In [8]: data1.head()
Out[8]:
   age  workclass  fnlwgt     education  educational-num      marital-status  \
0   25    Private  226802          11th                7       Never-married
1   38    Private   89814       HS-grad                9  Married-civ-spouse
2   28  Local-gov  336951    Assoc-acdm               12  Married-civ-spouse
3   44    Private  160323  Some-college               10  Married-civ-spouse
4   18          ?  103497  Some-college               10       Never-married

          occupation relationship   race  gender  capital-gain  capital-loss  \
0  Machine-op-inspct    Own-child  Black    Male             0             0
1    Farming-fishing      Husband  White    Male             0             0
2    Protective-serv      Husband  White    Male             0             0
3  Machine-op-inspct      Husband  Black    Male          7688             0
4                  ?    Own-child  White  Female             0             0

   hours-per-week native-country income
0              40  United-States  <=50K
1              50  United-States  <=50K 2 40 United-States >50K
3              40  United-States   >50K
4              30  United-States  <=50K

read_csvのdtypeオプションを使い、文字列で読み込む

例1

# adult.csvのage列のデータを文字列で読み込む
data1 = pd.read_csv("adult.csv", dtype = {'age' : 'object'})

複数列を文字列型で読み込む

例2

# adult.csvのage列とデータをeducational-num列を文字列で読み込む
data1 = pd.read_csv("adult.csv", dtype = {'age' : 'object', 'educational-num' : 'object'})

ええい、とりあえずすべての列を文字列で読み込んでしまえ。話はそれからだ

例3

# adult.csvの列データをすべて文字列で読み込む
data1 = pd.read_csv("adult.csv", dtype = 'object')

 

中身がよくわからないデータであれば、いったんすべて文字列型で読み込み確認した方が安全です。