[英]Python pandas - read_csv Dataframe is dropping values from columns
[英]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
使用usecols
和names
參數分別指定列索引和名稱。
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.