Stephen P. Molnar wrote: > I have a block of data extracted from a quantum mechanical calculation: > > CARTESIAN COORDINATES (A.U.) > ---------------------------- > NO LB ZA FRAG MASS X Y Z > 0 C 6.0000 0 12.011 -3.265636 0.198894 0.090858 > 1 C 6.0000 0 12.011 -1.307161 1.522212 1.003463 > 2 C 6.0000 0 12.011 1.213336 0.948208 -0.033373 > 3 N 7.0000 0 14.007 3.238650 1.041523 1.301322 > 4 C 6.0000 0 12.011 -5.954489 0.650878 0.803379 > 5 C 6.0000 0 12.011 5.654476 0.480066 0.013757 > > where the number of lines depends upon the molecule being considered. > > I want to extract the block of data starting on line 4 and column 4. > Unfortunately, the only programming language in which I used to be > competent in is Fortran. I have attempted researching this problem, but > have only succeeded in increasing my mental entropy. > > Help will be much appreciated. Thanks in advance. >
pandas is the swiss army knife of data manipulation in Python -- albeit with a non-negligable learning curve. Some examples (from an amateur): $ cat data.txt CARTESIAN COORDINATES (A.U.) ---------------------------- NO LB ZA FRAG MASS X Y Z 0 C 6.0000 0 12.011 -3.265636 0.198894 0.090858 1 C 6.0000 0 12.011 -1.307161 1.522212 1.003463 2 C 6.0000 0 12.011 1.213336 0.948208 -0.033373 3 N 7.0000 0 14.007 3.238650 1.041523 1.301322 4 C 6.0000 0 12.011 -5.954489 0.650878 0.803379 5 C 6.0000 0 12.011 5.654476 0.480066 0.013757 $ python3 Python 3.4.3 (default, Nov 17 2016, 01:08:31) [GCC 4.8.4] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import pandas >>> table = pandas.read_table("data.txt", skiprows=2, delimiter=" ", skipinitialspace=True) >>> table NO LB ZA FRAG MASS X Y Z 0 0 C 6 0 12.011 -3.265636 0.198894 0.090858 1 1 C 6 0 12.011 -1.307161 1.522212 1.003463 2 2 C 6 0 12.011 1.213336 0.948208 -0.033373 3 3 N 7 0 14.007 3.238650 1.041523 1.301322 4 4 C 6 0 12.011 -5.954489 0.650878 0.803379 5 5 C 6 0 12.011 5.654476 0.480066 0.013757 [6 rows x 8 columns] >>> table[3:] NO LB ZA FRAG MASS X Y Z 3 3 N 7 0 14.007 3.238650 1.041523 1.301322 4 4 C 6 0 12.011 -5.954489 0.650878 0.803379 5 5 C 6 0 12.011 5.654476 0.480066 0.013757 [3 rows x 8 columns] >>> table[["X", "Y", "Z"]] X Y Z 0 -3.265636 0.198894 0.090858 1 -1.307161 1.522212 1.003463 2 1.213336 0.948208 -0.033373 3 3.238650 1.041523 1.301322 4 -5.954489 0.650878 0.803379 5 5.654476 0.480066 0.013757 [6 rows x 3 columns] >>> table.MASS.mean() 12.343666666666666 _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor