Two problems that I can see.\
First, df = arcpy.ListDataFrames(mxd)[0] needs to be arcpy.mapping.ListDataFrames(mxd)[0]
Secondly and probably the main issue, arcpy.mapping.ListLayers(mxd, df) is currently passing df as the wildcard, see the following syntax:
ListLayers (map_document_or_layer, {wildcard}, {data_frame})
You'll need to put in an additional blank wildcard arg ie arcpy.mapping.ListLayers(mxd, "", df) to return all the layers in the dataframe as expected.
See http://resources.arcgis.com/en/help/main/10.2/index.html#//00s30000002n000000