Python:通过制表符将列表分为2个子列表

时间:2018-11-05 15:25:50

标签: python list

问题: 如何将列表分成两个子列表,其中的元素由元素中的选项卡分隔?

上下文: 我想读取由制表符分隔的.txt文件到Pandas DataFrame中。这些文件如下所示:

  

第1列\ t 123
  列2 \ t
  Column3 \ t文字

意思是每一行都有一列,然后是一个制表符,然后是该列的一个值(有时没有值)。

我的想法是读取文件并将每一行保存为列表的元素,然后将列表分为两部分,将第一部分放在制表符之前作为一个列表,将第二部分放在制表符之后作为另一个列表。然后从那里构建我的数据框。

for file in txt_files:  #iterate over all files
  f = open(file)        #open each file individually
  lines = f.readlines() #read each line as an element into a list 
  f.close()

#make sublists columns and values

2 个答案:

答案 0 :(得分:1)

您可以像这样将文件读取到数据框中:

public class HomeController : Controller
    {
        bool flag;
        static Thread mythread;
         [HttpPost]
        public async Task<ActionResult> Start()
        {
           flag = true;
           if (messageType.Contains("demo1"))
            {
                mythread = new Thread(async () => await ProcessStart("data1",flag));
                thread.Start();
            }

        }

         private static async Task ProcessStart(string message,bool flag)
        {

            while (flag)
            {                

                    await deviceClient.SendEventAsync(message);

            }
        }

         [HttpPost]
        public ActionResult Stop()
        {
            mythread.Abort(); // still unable to kill started thread :(
            flag = false;
           return View("Index");
        }

答案 1 :(得分:1)

如果我理解正确,您可以对数据帧read_csv进行转置,即可获得delimiter='\t'

演示:

>>> from io import StringIO           
>>> import pandas as pd                                                         
>>>                                                                             
>>> file = StringIO('''Column1\t123 
...: Column2\t 
...: Column3\ttext''')                                                      
>>>                                                                             
>>> df = pd.read_csv(file, delimiter='\t', index_col=0, header=None).T                                                                
>>> df                                                                          
>>>
0 Column1 Column2 Column3
1     123     NaN    text

(如果分隔符确实是' \t ',则使用delimiter=' \t 'engine='python')。