我有一个格式如下的数据:
foo<tab>1.00<space>1.33<space>2.00<tab>3
Run Code Online (Sandbox Code Playgroud)
现在我尝试逐渐根据最后一个字段对文件进行排序.我尝试了以下命令,但它没有像我们预期的那样排序.
$ sort -k3nr file.txt # apparently this sort by space as delimiter
$ sort -t"\t" -k3nr file.txt
sort: multi-character tab `\\t'
$ sort -t "`/bin/echo '\t'`" -k3,3nr file.txt
sort: multi-character tab `\\t'
Run Code Online (Sandbox Code Playgroud)
什么是正确的方法呢?
这是样本数据.
我一直在使用Pandas/Python在Windows中阅读制表符分隔的数据文件而没有任何问题.数据文件包含前三行中的注释,然后是标题.
df = pd.read_csv(myfile,sep='\t',skiprows=(0,1,2),header=(0))
Run Code Online (Sandbox Code Playgroud)
我现在正试图用我的Mac阅读这个文件.(我第一次在Mac上使用Python.)我收到以下错误.
pandas.parser.CParserError: Error tokenizing data. C error: Expected 1
fields in line 8, saw 39
Run Code Online (Sandbox Code Playgroud)
如果设置error_bad_lines的说法read_csv到假,我得到以下信息,这一直持续到最后一行的末尾.
Skipping line 8: expected 1 fields, saw 39
Skipping line 9: expected 1 fields, saw 125
Skipping line 10: expected 1 fields, saw 125
Skipping line 11: expected 1 fields, saw 125
Skipping line 12: expected 1 fields, saw 125
Skipping line 13: expected 1 fields, saw 125
Skipping line 14: expected 1 fields, …Run Code Online (Sandbox Code Playgroud) 我正在处理一个以制表符分隔的字符串.我正在使用该split功能完成此 功能,并且它适用于大多数情况.当字段丢失时会出现问题,因此我不会在该字段中获取null,而是获得下一个值.我将解析后的值存储在字符串数组中.
String[] columnDetail = new String[11];
columnDetail = column.split("\t");
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激.如果可能的话,我想将解析后的字符串存储到字符串数组中,以便我可以轻松访问解析后的数据.
我df在pandas中有一个使用pandas.read_tablecsv文件构建的数据帧.数据框有几列,并由其中一列索引(这是唯一的,因为每一行都有一个用于索引的列的唯一值.)
如何根据应用于多列的"复杂"过滤器选择数据框的行?我可以轻松地选择列colA大于10 的数据帧切片,例如:
df_greater_than10 = df[df["colA"] > 10]
Run Code Online (Sandbox Code Playgroud)
但是,如果我想要的东西就像一个过滤器:选择的切片df,其中任何列都大于10?
或者,如果值colA大于10但值colB小于5?
这些如何在熊猫中实施?谢谢.
我遇到过这样的问题,即Excel不能与UTF-8编码的CSV文件一起使用.请参阅Stack Overflow上的相关问题.
我遵循导出为UTF-16的解决方案,但似乎使用UTF-16,逗号字符不能作为分隔符,只有制表符.
但是,我找不到任何正确的文件名和mime类型应该是制表符分隔文件.我找到了某个地方,说它是application/vnd.ms-excel和xls.这适用于Excel 2003但2007不批准.
那应该是什么?
我有一个制表符分隔的.txt文件,我试图导入Python中的矩阵数组,格式与文本文件相同,如下所示:
123088 266 248 244 266 244 277
123425 275 244 241 289 248 231
123540 156 654 189 354 156 987
请注意,我想要传递给Python并在从中创建矩阵数组时保持相同的格式,上面有很多很多行(大约200个).
我对此的当前代码是:
d = {}
with open('file name', 'rb') as csv_file:
csv_reader = csv.reader(csv_file, delimiter='\t')
for row in csv_reader:
d[row[0]] = row[1:]
Run Code Online (Sandbox Code Playgroud)
它稍微做了我需要做的事情,但不是我的目标.我想完成我可以输入打印的代码(d [0,3]),它会吐出248.
我在Ubuntu 13.10上的ipython3中使用pandas 0.12.0,以便在txt文件中拼写大的制表符分隔数据集.使用read_table从txt创建DataFrame似乎工作,第一行作为标题读取,但尝试使用其名称作为索引访问第一列会引发KeyError.我不明白为什么会发生这种情况,因为列名都显示已正确读取,并且每个其他列都可以这种方式编入索引.
数据如下所示:
RECORDING_SESSION_LABEL LEFT_GAZE_X LEFT_GAZE_Y RIGHT_GAZE_X RIGHT_GAZE_Y VIDEO_FRAME_INDEX VIDEO_NAME
73_1 . . 395.1 302 . .
73_1 . . 395 301.9 . .
73_1 . . 394.9 301.7 . .
73_1 . . 394.8 301.5 . .
73_1 . . 394.6 301.3 . .
73_1 . . 394.7 300.9 . .
73_1 . . 394.9 301.3 . .
73_1 . . 395.2 302 1 1_1_just_act.avi
73_1 . . 395.3 302.3 1 1_1_just_act.avi
73_1 . . 395.4 301.9 1 …Run Code Online (Sandbox Code Playgroud) 我在阅读制表符分隔文件时遇到问题.
我文件的结构是:
Field 1 Field 2 Field 3
Element11 Element12 Element13
Element21 Element22 Element23
Element31 Element32 Element33
Run Code Online (Sandbox Code Playgroud)
从这个文件我想创建一个具有这种结构的数组:
$csv = array(
array( 'Field 1' => 'Element11',
'Field 2' => 'Element12',
'Field 3' => 'Element13',
),
array( 'Field 1' => 'Element21',
'Field 2' => 'Element22',
'Field 3' => 'Element23',
),
array( 'Field 1' => 'Element31',
'Field 2' => 'Element32',
'Field 3' => 'Element33',
)
);
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我发现Ruby的each功能有点令人困惑.如果我有一行文本,each循环将给我每个空格分隔的单词而不是每个单独的字符.
那么检索由制表符分隔的字符串部分的最佳方法是什么.目前我有:
line.split.each do |word|
...
end
Run Code Online (Sandbox Code Playgroud)
但这不太正确.
我在一个名为test_tab.txt(制表符分隔)的文件中有以下内容:
header1 header2 header3
field1 field1a field1b; field1c
field2 field2a field2b
field3 field3a
field4 field4a field4b; field4c; field4d; field4e
field5 field5a
field6 field6a field6b; field6c
Run Code Online (Sandbox Code Playgroud)
我想将其转换为以下(也分隔标签,写入另一个文本文件):
header1 header2 header3
field1 field1a field1b
field1 field1a field1c
field2 field2a field2b
field3 field3a
field4 field4a field4b
field4 field4a field4c
field4 field4a field4d
field4 field4a field4e
field5 field5a
field6 field6a field6c
field6 field6a field6c
Run Code Online (Sandbox Code Playgroud)
我是一般的编程新手,但我已经google了一下,我认为这样做的一种可能方法是创建一个数组并以某种方式爆炸header3键值对.我不知道怎么去复制header1和header2下的字段.
我现在所拥有的只是创建数组的一些代码:
$mainarray = array();
foreach (file('test_tab.txt') as $row) {
list($header1, $header2, $header3) = explode("\t", $row);
$mainarray[] = …Run Code Online (Sandbox Code Playgroud)