dump the shapefile, make a featureclass in a file geodatabase. If you have a csv and it is causing issues, save it as an excel file and try the Excel to Table tool to make a geodatabase table.
If both the featureclass and the gdb table are good, try the join then.
If not, post examples of what is happening.
PS blank cells in spreadsheets aren't good. If you need to show nodata values, expecially for integers, use a nodata value (eg -99999 ) Spreadsheets and csv files don't handle nodata values particularly well and blanks are a no-no
... sort of retired...