我是编程新手。我正在尝试从csv文件中清除数据,以进行进一步的项目扩展。作为输入提供的csv文件确实很乱,我只需要其特定部分。
到目前为止,我一直在尝试提取“ 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编程获得类似的输出。
答案 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()
注意:我从原始文件中删除了几行,以使您的样本之间相同。
输入:
输出:
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