从没有列标题的数据文件中提取R或Python中的数据

时间:2018-10-05 17:24:22

标签: python r

我有一个包含多列的txt文件。请参阅下面的示例数据。

25 180701 1 12
25 180701 2 15
25 180701 3 11
25 180702 1 11
25 180702 2 14
25 180722 2 14
14 180701 1 11
14 180701 2 13

没有列标题。第1列是ID,第2列是日期,第3列是小时,第4列是值。我试图查找第1列中的数字25,并提取时段180701中所有小时的数据,以说180705所有值。因此结果将是一个包含以下数据的新文本文件。

25 180701 1 12
25 180701 2 15
25 180701 3 11
25 180702 1 11
25 180702 2 14

感谢R或Python的任何帮助。谢谢!

3 个答案:

答案 0 :(得分:1)

当我们使用read.csv/read.table读取文件时,会有一个选项header=FALSE并使用col.names

df1 <- read.csv("file.csv", header = FALSE,
      col.names = c("ID", "date", "Hour", "value"))

并稍后将值子集

subset(df1, ID == 25 & (date %in% 180701:180705), select = 1:4)

答案 1 :(得分:0)

R中的readr::read_delim()具有一个col_names参数,您可以将其设置为F

> readr::read_delim('hi;1;T\nbye;2;F', delim = ';', col_names = F)
# A tibble: 2 x 3
  X1       X2 X3   
  <chr> <int> <lgl>
1 hi        1 TRUE 
2 bye       2 FALSE

答案 2 :(得分:-1)

In Python, try this:

import pandas as pd

#To read csv files without headers. use 'header = None' to be explicit

df = pd.read_csv('test.csv',header = None)
df


# Then rename the generated columns
df2 = df.rename({0:'ID',1:'Date',2:'Hours',3:'Value'},axis = 'columns')
df2