2016-06-09 168 views
1

我有這個信息裏面.dat文件(但thousans線的真實文件)數據:如何處理從文件和排序蟒蛇

import numpy as np 
import matplotlib.pyplot as plt 
from pylab import * 

n = array([]) 
a = array([]) 
k0 = array([]) 
k1 = array([]) 
p1 = array([]) 
k2 = array([]) 
p2 = array([]) 

l = np.loadtxt('pascal.dat', skiprows=1, usecols=(0,1,2,3,4,5)).T 
n=append(n,l[0]) 
a=append(a,l[1]) 
k0=append(k0,l[2]) 
p1=append(p1,l[3]) 
k1=append(k1,l[4]) 
p2=append(p2,l[5]) 

n  a (au) k0 k1 P1 k2 
    1 3.156653 2  3 5 -18 
    2 3.152517 2  5 5 -23 
    3 3.154422 3 -18 5 29 
    4 3.151668 3 -16 5 24 
    5 3.158629 5 -19 5 21 
    6 3.156970 5 -17 5 16 
    7 3.155314 5 -15 5 11 
    8 3.153660 5 -13 5  6 
    9 3.152007 5 -11 5  1 
    10 3.150357 5 -9 5 -4 

我通過加載數據

我要使用的柱「一個(AU)」的值來計算從給定的中心「n」個列的每個元件的距離,從而:

center = 3.15204 
for i in range(len(n)): 
    distance = abs(center-a[i])) 

好吧,現在我想重新寫入.dat文件考慮到距離的值。因此,我想添加一個名爲「距離」的新列,然後我想根據這個新參數對所有n行進行排序,其中最小(最接近中心),等等。

有什麼建議嗎?

+0

什麼是array([])'''?什麼是附加函數('''? – wwii

回答

2

我建議使用熊貓庫。以數據框的形式讀取.dat文件 - 這是一個非常強大的工具,通過它你可以操作數據,添加列等。

import pandas as pd 

with open('../pascal.dat') as f: 
    df = pd.Dataframe(f) 

center = 3.15 

df['distance'] = abs(3.15 - df['a (au)']) 
+0

),這聽起來像是大熊貓DataFrame的工作,它也有一個排序方法。http://pandas.pydata.org/pandas-docs/stable/generated /pandas.DataFrame.sort.html –

+0

'df.sort_values(by = ['distance'])'確切地說。 –