【问题标题】:How to remove rows from -BEGIN HEADER- to -END HEADER- and get the remaining data as new csv file in python如何从-BEGIN HEADER-到-END HEADER-中删除行并将剩余数据作为python中的新csv文件获取
【发布时间】:2022-10-17 13:23:36
【问题描述】:

所以现在我在这里有一个 csv 文件,我可以使用 python 访问它,并且我成功地删除了中间的行,但我无法将剩余的数据作为新的 csv 获取。

我已经尝试过这个代码-

import pandas as pd
import csv
df = pd.read_csv('/content/Final_Data.csv',error_bad_lines= False)
df.head()
data = df.drop(columns='-BEGIN HEADER-')

print(data)

with open('example.csv', 'w') as file:
    writer = csv.writer(file)
    writer.writerow(data)

[这是我的数据的图像链接。][1] [1]:https://i.stack.imgur.com/hJPCl.jpg

它将 -BEGIN HEADER- 视为一列,但它只接受行,直到 -END HEADER- 行。 我试图删除 -BEGIN HEADER- COLUMN 但它只删除了 -END HEADER- 行之前的值。 我的数据框只接受第 11 列的值。

请帮助我使用 python 访问剩余的数据。

【问题讨论】:

标签: python


【解决方案1】:

对于可变数量的标题行,您可以

  1. 读取完整文件
  2. 通过拆分特定字符串来删除标题
  3. 将剩余的 file_content 以ioString 的形式提供给 pandas
    from io import StringIO
    import pandas as pd
    
    # read entire file_content
    with open('/content/Final_Data.csv') as file:
        file_content = file.read()
    
    # remove header from file_content
    header_end = "-END HEADER-"
    csv_content = file_content.split(header_end)[-1]
    
    
    # get dataframe from remaining csv_content
    df = pd.read_csv(StringIO(csv_content))
    print(df.head())
    

【讨论】:

  • 但是,对于在 END HEADER 之前行数较少的其他文件,您如何做到这一点?
猜你喜欢
  • 2014-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-03
  • 2015-03-22
  • 2020-01-29
  • 1970-01-01
相关资源
最近更新 更多