簡體   English   中英

如何刪除python pandas read_csv中沒有標題的列

[英]How to delete columns without headers in python pandas read_csv

目前,我必須閱讀CSV文件並預先設置標題。 然后刪除不需要的列。 有什么辦法可以直接做到這一點?

# Current Code
columns_name = ['station', 'date', 'observation', 'value', 'other_1', 
'other_2', 'other_3', 'other_4']
del_columns_name = ['other_1', 'other_2', 'other_3', 'other_4']
df =pd.read_csv('filename', names = columns_name)
df.drop(del_columns_name, axis=1)

一種方法是使用您的兩個列表來解析所需的索引和列名稱。

然后對pd.read_csv使用usecolsnames參數分別指定列索引和名稱。

idx, cols = list(zip(*((i, x) for i, x in enumerate(columns_name) \
                 if x not in del_columns_name)))

df = pd.read_csv('filename', usecols=idx, names=cols, header=None)

如文檔中所述,當不存在標頭時,您還應該明確指定header=None

說明

  • 用生成器表達式來遍歷columns_name並刪除不在項目del_columns_name
  • 使用enumerate來提取索引。
  • 使用zip為索引和列名稱創建單獨的元組。

我認為您甚至可以立即指定索引。 在這種情況下,您的位置為: [0,1,2,3] 考慮這個也解析日期的示例。

import pandas as pd

cols = ['station', 'date', 'observation', 'value']

data = '''\
1, 2018-01-01, 1, 1, 1, 1, 1, 1
2, 2018-01-02, 2, 2, 2, 2, 2, 2'''

file = pd.compat.StringIO(data)
df = pd.read_csv(file, names=cols, usecols=[0,1,2,3], parse_dates=[1])

print(df)

返回值:

   station       date  observation  value
0        1 2018-01-01            1      1
1        2 2018-01-02            2      2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM