cmd去除csv首行
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cmd去除csv首行相关的知识,希望对你有一定的参考价值。
本文介绍了如何删除 .csv 文件中的第一行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!问题描述
我需要删除 CSV 文件的第一行.
在我的脚本中,我收到了 CSV 文件作为参数,它的第一行包含一些不需要的数据.所以我只需要在处理它之前删除第一行.
推荐答案
我会这样做:
Set fso = CreateObject("Scripting.FileSystemObject")
Set csv = fso.OpenTextFile(WScript.Arguments(...))
If Not csv.AtEndOfStream Then csv.SkipLine 'skip first row
Do Until csv.AtEndOfStream
line = csv.ReadLine
'process read line
Loop
csv.Close
当然,您也可以执行 ReadLine 而不处理跳过第一行的返回值,如 Ekkehard.Horner 建议,但 IMO SkipLine 更好地反映了语义.
这篇关于如何删除 .csv 文件中的第一行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋! 参考技术A 在用MR或Spark处理较大的csv文件时,经常会遇到这么一个问题,csv文件的第一行往往是列名,怎么办呢?
我有一个简单的方法
sed 1d dual.txt > noheader.txt
用sed 1d就可以把dual.txt文件的第一行去掉,>是指将前面的命令的结果覆盖到noheader.txt,>>就是追加了。
需要去除字母的 CSV 列号数据 - Pandas
【中文标题】需要去除字母的 CSV 列号数据 - Pandas【英文标题】:Need to strip CSV Column Number Data of Letters - Pandas 【发布时间】:2021-07-30 04:52:15 【问题描述】:我正在处理一个 .csv,其中包含数字数据包含字母的列。我想去掉字母,以便该列可以是浮点数或整数。
我尝试了以下方法:
使用循环/定义过程去除字符串数据的对象列,在“MPG”列中,只留下数值。
它应该打印至少有一个以字符'mpg'结尾的条目的列的名称
在 JUPYTER 笔记本单元中编码:
第 1 步:
MPG_cols = []
for colname in df.columns[df.dtypes == 'object']:
if df[colname].str.endswith('mpg').any():
MPG_cols.append(colname)
print(MPG_cols)
使用.str
,所以我可以使用逐元素字符串方法
只想考虑字符串列
这给了我输出:
[力量]。 #目前为止很好
第 2 步:
#define the value to be removed using loop
def remove_mpg(pow_val):
"""For each value, take the number before the 'mpg'
unless it is not a string value. This will only happen
for NaNs so in that case we just return NaN.
"""
if isinstance(pow_val, str):
i=pow_val.replace('mpg', '')
return float(pow_val.split(' ')[0])
else:
return np.nan
position_cols = ['Vehicle_type']
for colname in MPG_cols:
df[colname] = df[colname].apply(remove_mpg)
df[Power_cols].head()
我得到的错误:
ValueError Traceback (most recent call last)
<ipython-input-37-45b7f6d40dea> in <module>
15
16 for colname in MPG_cols:
---> 17 df[colname] = df[colname].apply(remove_mpg)
18
19 df[MPG_cols].head()
~/opt/anaconda3/lib/python3.8/site-packages/pandas/core/series.py in apply(self, func, convert_dtype, args, **kwds)
3846 else:
3847 values = self.astype(object).values
-> 3848 mapped = lib.map_infer(values, f, convert=convert_dtype)
3849
3850 if len(mapped) and isinstance(mapped[0], Series):
pandas/_libs/lib.pyx in pandas._libs.lib.map_infer()
<ipython-input-37-45b7f6d40dea> in remove_mpg(pow_val)
8 if isinstance(pow_val, str):
9 i=pow_val.replace('mpg', '')
---> 10 return float(pow_val.split(' ')[0])
11 else:
12 return np.nan
ValueError: could not convert string to float: 'null'
我将类似的代码应用于不同的列,它在该列上有效,但不是在这里。
任何指导将不胜感激。
最佳,
【问题讨论】:
您能否在问题中包含 DataFrame 的示例?这将帮助我们重现您遇到的问题。 【参考方案1】:这会起作用的,
import pandas as pd
pd.to_numeric(pd.Series(['$2', '3#', '1mpg']).str.replace('[^0-9]', '', regex=True))
0 2 1 3 2 1 数据类型:int64
完整的解决方案,
for i in range(df.shape[1]):
if(df.iloc[:,i].dtype == 'object'):
df.iloc[:,i] = pd.to_numeric(df.iloc[:,i].str.replace('[^0-9]', '', regex=True))
df.dtypes
选择不更改的列
for i in range(df.shape[1]):
# 'colA', 'colB' are columns which should remain same.
if((df.iloc[:,i].dtype == 'object') & df.column[i] not in ['colA','colB']):
df.iloc[:,i] = pd.to_numeric(df.iloc[:,i].str.replace('[^0-9]', '', regex=True))
df.dtypes
【讨论】:
哇,谢谢! -- 好的,范围解决方案完成了工作 --- MPG、MPH 和货币列中的美元符号,但它工作得有点太好了。我有一列对象数据,其中包括汽车型号名称,并且代码覆盖了该数据。有没有办法只恢复那一列,还是我需要从原始 .csv 导入那一列? 如果只有1列,可以if( (df.iloc[:,i].dtype == 'object') & (df.columns[i] != 'Column') )
,如果是多列,可以用not in
[]。我会更新答案,让我知道它是否解决了问题
下午蟑螂,非常感谢您的回复。我不是一个刚开始的程序员,所以我有点困惑。您是说使用您提供的代码 sn-p 来恢复丢失的数据列吗?或者你是说我应该运行你的 sn-p 而不是我做的,以排除该列?我目前的需要是恢复丢失的数据列——找回品牌和型号名称。
您必须重新运行代码并将数据加载回 python。始终保留原始数据。我认为你只需要加载数据,一旦覆盖信息不可用,你总是可以创建新的数据帧,一旦你得到结果,然后才替换/覆盖。我希望它有所帮助。【参考方案2】:
我认为您需要重新审视函数 remove_mpg
的逻辑,一种调整方式如下:
import re
import numpy as np
def get_me_float(pow_val):
my_numbers = re.findall(r"(\d+.*\d+)mpg", pow_val)
if len(my_numbers) > 0 :
return float(my_numbers[0])
else:
return np.nan
例如,需要测试功能。
my_pow_val=['34mpg','34.6mpg','0mpg','mpg','anything']
for each_pow in my_pow_val:
print(get_me_float(each_pow))
输出:
34.0
34.6
nan
nan
南
【讨论】:
【参考方案3】:为什么不使用converters
参数到read_csv
函数在加载csv 文件时去除多余的字符?
def strip_mpg(s):
return float(s.rstrip(' mpg'))
df = read_csv(..., converters='Power':strip_mpg, ...)
【讨论】:
以上是关于cmd去除csv首行的主要内容,如果未能解决你的问题,请参考以下文章