Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:清除csv文件中不匹配的数据_Python_Pandas_Csv - Fatal编程技术网

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

Python:清除csv文件中不匹配的数据,python,pandas,csv,Python,Pandas,Csv,我是编程新手。我正在尝试清理csv文件中的数据,以便进一步扩展项目。作为输入提供的csv文件非常混乱,我只需要它的特定部分 输入文件如下: 所需格式: 到目前为止,我正在尝试提取“观察模式”、“LON”和“LAT”的值,但我不确定如何附加后面的值。 这就是我迄今为止所尝试的: import csv import re file = csv.reader(open('1mvn_kp_iuvs_2018_01_r01.tab.csv','r')) mode = [] lat = [] for r

我是编程新手。我正在尝试清理csv文件中的数据,以便进一步扩展项目。作为输入提供的csv文件非常混乱,我只需要它的特定部分

输入文件如下:

所需格式:

到目前为止,我正在尝试提取“观察模式”、“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文件,预期输出为

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

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

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

data = pandas.read_csv(path_to_file, skiprows=44, skipfooter=378, engine='python', dtype='float')
此调用将读取文件中的第一组数据。要访问“海拔高度”列中的第五个值,您可以执行以下操作:

data['ALTITUDE'][4]
然后,您必须使用一个类似的read_csv调用,使用不同的skiprows和skipfooter值来访问其他数据集。一旦您拥有了所有数据,从numpy调用concatenate应该允许您将所有数据作为一个数组。小心标题

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

试试这个

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()
注意:我已经从原始文件中删除了几行,以使您的示例之间完全相同

输入:

输出:

         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  

现在是否可见?是的,但最好不要共享图像。而是像代码格式一样共享。我在提交时尝试将其作为代码格式共享,但什么都看不见,所以将其编辑为images@P.Saini-是否要删除文件中的元数据?我的意思是你只想从海拔高度,二氧化碳,二氧化碳+?实际上,我想把LON,LAT和观测模式的值附加到海拔高度,CO0,CO2+,的值上,。。。。等等