I don't think there is another way with CSV files. All data will be read anyway, since every block on disk probably contains some of these fields.
Moreover, even if it weren't (e.g. if you have really long, multi kb lines), then the variable size makes anything hard.
With indexing you can optimize multiple passes, (e.g. keep an index by some major parameter, like time), but it is laborous, and only useful if you do this multiple times with varying parameters.