问题: 如何将列表分成两个子列表,其中的元素由元素中的选项卡分隔?
上下文:
我想读取由制表符分隔的.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
答案 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'
)。