TL;DR: For Spark versions up to 1.6, to checkpoint DataFrames, my suggested solution is based on another answer, but with one extra line:
df.rdd.checkpoint
df.rdd.count
val df2 = sqlContext.createDataFrame(df.rdd, df.schema)
// df2 is checkpointed
If you want to learn PySpark, you can check out the PySpark course by Intellipaat.