Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.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 Pandas忽略/删除csv文件中行之间的字符串,但dropna dosen';似乎有效_Python_Pandas_Csv - Fatal编程技术网

Python Pandas忽略/删除csv文件中行之间的字符串,但dropna dosen';似乎有效

Python Pandas忽略/删除csv文件中行之间的字符串,但dropna dosen';似乎有效,python,pandas,csv,Python,Pandas,Csv,在Jared和我自己的一点研究的帮助下,我提出了以下解决方案: df = pd.read_csv(DATAFILE_INPUT, sep='\t', skiprows=8, error_bad_lines=False, warn_bad_lines=False, decimal=',') df.columns =['Zeit', 'Zyklus', 'Weg','Kraft', 'Dehnung', 'Temperatur', 'Temp. oben','Temp. mitte', 'Temp.

在Jared和我自己的一点研究的帮助下,我提出了以下解决方案:

df = pd.read_csv(DATAFILE_INPUT, sep='\t', skiprows=8, error_bad_lines=False, warn_bad_lines=False, decimal=',')
df.columns =['Zeit', 'Zyklus', 'Weg','Kraft', 'Dehnung', 'Temperatur', 'Temp. oben','Temp. mitte', 'Temp. untens']

df = df[df.Zeit.str.contains('Zeit') == False]
df.columns = ['s','segments','mm','kN','%','°C','°C','°C','°C']
df = df[df.s.str.contains('s') == False]
谢谢大家的帮助

我试图使用pandas创建一个新的CSV文件,但raw.date文件每x行有4行

python 2.7

到目前为止,我的代码是:

数据文件_输入='test.dat' 数据文件_输出_1='test.out'

    in_columns = ['a', 'b', 'c','d']
# read in data (skip some rows / column separator is a tab / no header use our names / decimal separator is a comma)
    df = pd.read_csv(DATAFILE_INPUT, skiprows=1, sep='\t', header=None, names=in_columns, decimal=',')

    out_columns = ['a','b', 'c', 'd']

    df.index += 1

    # save data (filename / print row numbers / tab separator / only print defined columns / decimal separator)
    df.to_csv(path_or_buf=DATAFILE_OUTPUT_1, index=True, sep='\t', columns=out_columns, decimal='.')
以下是我使用的软件包:

 import pandas as pd
更好的例子是:

  In: index a b c d
     0   1,3 1,4  1,32 1,4325 
      1  2,234 2,123 3,123 1,123
     2
    4       name 
    5      guido 
     6     mother 
     7    2,123 2,123123 4,123123 5,123123
     8   1,123123 2,123123 3,123123 4,123123 
     9  1,123123 2,123123 3,123123 4,123123
    10
    11       name 
    12      guido 
     13     mother 
      15    1,2134234 3,34324 3,234234 5,234234
这就是我想要的输出:

Out: index a b c d
         0   1.3 1.4  1.32 1.4325 
          1  2.234 2.123 3.123 1.123
         2    2.123 2.123123 4.123123 5.123123
         3   1.123123 2.123123 3.123123 4.123123 
         4  1.123123 2.123123 3.123123 4.123123
          5    1.2134234 3.34324 3.234234 5.234234
那么,我该怎么做,删除,擦除,忽略这4行

这里是我的数据样本和第一个结果的链接。
您可以将
错误错误行
设置为
错误
警告错误行
设置为
错误
(如果您不这样做,它将打印出所有错误行来警告您)

错误\u错误\u行:布尔值,默认为True

包含过多字段的行(例如,包含过多逗号的csv行)将 默认情况下,将引发异常,并且不会生成数据帧 返回。如果为False,则这些“坏行”将从 返回的数据帧

我在您提供的文件上运行了上述操作,但您需要花时间验证它是否包含所有要保留的行。结果数据帧的形状是
(10269,9)


另一种更实用的方法,因为此文件采用非标准格式,我不知道您预期的输出是什么样子(您预期有多少列?):


为什么要复制/粘贴一个注释了大约50%代码的问题的代码。它显然不相关,为什么要包含它?
df=pd.DataFrame(pd.read\u csv(DATAFILE\u INPUT,
为什么要将其转换为
DataFrame
pd.read\u csv
应该已经返回了一个数据帧。请看一下如何为我们提供。谢谢!@sulfur你不明白我的意思,我说的是pd.read\u cv(…)将已返回一个pandas
DataFrame
。您不需要按以下方式调用
pd.DataFrame
well@roganjosh@zipa所以我重写了所有内容并创建了一个最小的、完整的和可验证的示例,所以我希望至少是这样。@Jared非常感谢你们,明天我将测试它。尽管你们提到了结果数据帧的形状,但有一个问题是(10269,9)。这是什么意思?如果答案太明显,很抱歉,但我是新熊猫。提前谢谢。这没关系。这意味着从CSV读取数据帧(
df
)后,它有10269行和9列。你可以做
df.shape
来尝试这个。所以我尝试了它,并使用了我的原始行,修改了它。df=pd.read\u CSV('./RF_P92_500_180_023_1.dat',sep='\t',header=None,names=in_columns,skiprows=10,encoding='latin-1',decimal=',',error_bad_lines=False,warn_bad_lines=False)但我仍然得到了与以前相同的错误。TypeError:不支持的操作数类型对于-:“str”和“str”似乎可以工作,但它们仍然剩下2行,正如您在这里尊敬地看到的,我的回答的目的是尝试帮助您,而不是为您完成所有操作。例如,输出中仍然有来自标题的文本行。您显然也希望删除这些行。我没有看到您正在删除的NaN行参考,但有许多方法可以检查NaN行上方和下方的行,并与原始文件进行比较,以了解可能存在的问题。祝您好运!
import pandas as pd

df = pd.read_csv('./RF_P92_500_180_023_1.dat', sep='\t', skiprows=9,
                 encoding='latin-1', error_bad_lines=False, warn_bad_lines=False)
import csv
import pandas as pd

# using csv with Pandas

filename = 'RF_P92_500_180_023_1.dat'
header = ['Zeit', 'Zyklus Zähler Zähler', 'Weg',
          'Kraft', 'Dehnung', 'Temperatur', 'Temp. oben',
          'Temp. mitte', 'Temp. untens', 'segments',
          'mm', 'kN', '%', '°C', '°C', '°C', '°C']

data = []
with open(filename, 'r') as f:
    reader = csv.reader(f)
    for row in reader:
        if len(row) == 9:
            # flatten a list of lists into single list
            final_row = sum([item.split('\t') for item in row], [])
            data.append(final_row)

df = pd.DataFrame(data=data, columns=header)
print(df.shape) # (10046, 17)