Python:从csv文件中清除不匹配的数据

时间:2018-11-15 06:50:50

标签: python pandas csv

我是编程新手。我正在尝试从csv文件中清除数据,以进行进一步的项目扩展。作为输入提供的csv文件确实很乱,我只需要其特定部分。

输入文件如下:  enter image description here

必填格式:enter image description here

到目前为止,我一直在尝试提取“ OBSERVATION_MODE”,“ LON”和“ LAT”的值,但是我不确定如何附加后面的值。 到目前为止,这是我尝试过的:

import csv
import re

file = csv.reader(open('1mvn_kp_iuvs_2018_01_r01.tab.csv','r'))
mode = []
lat = []
for row in file:
    for values in row:
        if 'OBSERVATION_MODE' in values:
            print("\n")
            mode.append(row)

        if re.search('LAT', values):
            lat.append(row)

print(mode)
print(lat)

我很确定我要尝试的逻辑根本没有用。有人可以给我更好的概述吗?我也尝试过在线搜索,但是当行和列都不匹配时,我什么也没清理数据。任何帮助表示赞赏!

谢谢

链接到inut csv文件,预期输出为https://drive.google.com/open?id=1LJxxbDcplSCPVWKnOC3usx7kZE8dS32H

请注意,预期输出'Cleaned_sample.xlsx'是我手动生成的,并且我希望使用python编程获得类似的输出。

2 个答案:

答案 0 :(得分:0)

您应该尝试使用熊猫的read_csv函数。有多个关键字,例如header,skiprows或usecols,可用于设置数据在文件中的起始位置,跳过许多行,仅使用特定的列等。返回的对象类似于数组,您可以轻松访问您的数据。

基于您提供的文件的示例:

data = pandas.read_csv(path_to_file, skiprows=44, skipfooter=378, engine='python', dtype='float')

此调用将读取文件中的第一组数据。要访问“ ALTITUDE”列中的第五个值,您可以例如执行

data['ALTITUDE'][4]

然后,您将不得不使用相似的read_csv调用,并使用不同的数值的skiprows和skipfooter来访问其他数据集。一旦拥有了所有这些,从numpy进行连接的调用应该允许您将所有数据作为一个数组。注意标题。

请注意,lambda表达式可以在行列中使用,如果找到可用于指定不需要的行的模式,则它可能仅允许您调用read_csv()一次。

答案 1 :(得分:0)

尝试一下

import pandas as pd
df1=pd.read_csv('1mvn_kp_iuvs_2018_01_r01.tab (1).csv',header=None,nrows=18)
dic=df1.set_index(0)[2].to_dict()
for u,v in dic.items():
    dic[u]=[v]
df1= pd.DataFrame(dic)
df2=pd.read_csv('1mvn_kp_iuvs_2018_01_r01.tab (1).csv',skiprows=19)
df1 =  pd.concat([df1]*len(df2),ignore_index=True)
df3=pd.concat([df1,df2],axis=1)
print df3.head()

注意:我从原始文件中删除了几行,以使您的样本之间相同。

输入:

enter image description here

输出:

         LAT  LAT_MSO  LOCAL_TIME       LON  LON_MSO  MARS_SEASON_LS  \
0 -19.512522      NaN    8.083779  6.757075      NaN       108.81089   
1 -19.512522      NaN    8.083779  6.757075      NaN       108.81089   
2 -19.512522      NaN    8.083779  6.757075      NaN       108.81089   
3 -19.512522      NaN    8.083779  6.757075      NaN       108.81089   
4 -19.512522      NaN    8.083779  6.757075      NaN       108.81089   

   MARS_SUN_DIST  ORBIT_NUMBER      SC_ALT  SC_GEO_LAT     ...       \
0       1.630965        6330.0  203.680405  -17.815445     ...        
1       1.630965        6330.0  203.680405  -17.815445     ...        
2       1.630965        6330.0  203.680405  -17.815445     ...        
3       1.630965        6330.0  203.680405  -17.815445     ...        
4       1.630965        6330.0  203.680405  -17.815445     ...        

   SUBSOL_GEO_LON        SZA  ALTITUDE          CO2         CO2+            O  \
0         65.4571  71.790688        80  -9999999000  -9999999000  -9999999000   
1         65.4571  71.790688        90  -9999999000  -9999999000  -9999999000   
2         65.4571  71.790688       100  -9999999000  -9999999000  -9999999000   
3         65.4571  71.790688       110  -9999999000  -9999999000  -9999999000   
4         65.4571  71.790688       120  -9999999000  -9999999000    551467460   

            N2            C            N            H  
0  -9999999000  -9999999000  -9999999000  -9999999000  
1  -9999999000  -9999999000  -9999999000  -9999999000  
2  -9999999000  -9999999000  -9999999000  -9999999000  
3  -9999999000  -9999999000  -9999999000  -9999999000  
4    710188930  -9999999000  -9999999000  -9999999000