我有一个.txt文件,其中有一些来自测量的列。 这些值来自传感器,列数并不总是相同。
文件结构看起来像这样(它有大约40行"垃圾"来自传感器描述,日期等):
1,09666671875554 1,01333338146408 1,70666674772898 -8,36548137664795 69,9546508789063 1,09666671875554 1,01333338146408 1,70666674772898
我想创建一个脚本,它能够知道每个文件包含多少列,然后将每个列作为变量导入,例如,第1列命名为" a",第2列 - >" b",第3列 - >" c"等等。
到目前为止,我只能将所有数据导入到变量中:
import pandas as pd
test=pd.read_csv(filename, sep='/s+', lineterminator='\r',skiprows=40,engine='python',index_col=0)
输出看起来像这样
Out[3]:
Empty DataFrame
Columns: []
Index: [1,10666671923051 1,02333338193906 1,71666674820396 -8,34606075286865 69,9546813964844 1,10666671923051 1,02333338193906
我在Windows PC上使用anaconda。任何人都可以帮我解决这个问题吗?
提前致谢!
答案 0 :(得分:0)
将参数header
用于默认列名称 - 0,1,2..
,然后rename
使用dictionary
:
import string
#dict for map columns
d = dict(zip(range(26), list(string.ascii_lowercase)))
print (d)
{0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e', 5: 'f', 6: 'g', 7: 'h',
8: 'i', 9: 'j', 10: 'k', 11: 'l', 12: 'm', 13: 'n', 14: 'o',
15: 'p', 16: 'q', 17: 'r', 18: 's', 19: 't', 20: 'u',
21: 'v', 22: 'w', 23: 'x', 24: 'y', 25: 'z'}
test=pd.read_csv(filename,
sep='/s+',
lineterminator='\r',
skiprows=40,
engine='python',
index_col=0,
header=None)
test = test.rename(columns=d)
答案 1 :(得分:0)
确定! 我解决了这个问题:
import string
#dict for map columns
d = dict(zip(range(26), list(string.ascii_lowercase)))
print (d)
{0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e', 5: 'f', 6: 'g', 7: 'h',
8: 'i', 9: 'j', 10: 'k', 11: 'l', 12: 'm', 13: 'n', 14: 'o',
15: 'p', 16: 'q', 17: 'r', 18: 's', 19: 't', 20: 'u',
21: 'v', 22: 'w', 23: 'x', 24: 'y', 25: 'z'}
test=pd.read_csv(filename,sep='\s+',skiprows=40,engine='python',names=d, header=None, decimal=',')
test = test.rename(columns=d)
#clear data that is not needed
test.dropna(axis=1, how='all')