当前位置: 首页 > 知识库问答 >
问题:

Python:按tabseperating元素将列表拆分为2个子列表

宇文修文
2023-03-14

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

上下文:我想读取一个由制表符分隔的. txt文件到Pandas DataFrame中。这些文件看起来像:

列1\t 123
列2\t
列3\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个答案

阎佑运
2023-03-14

如果我理解正确,您只需将数据帧转置read\u 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',则使用分隔符='\t'引擎='python')。

左丘楷
2023-03-14

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

import pandas as pd

# Empty list to store dataframe rows
df_rows = []

# Read all text files
for tf in text_files:
    # For each file
    with open(tf) as f:
        # Empty dictionary to store column names and values
        df_dict = {}

        # For each line
        for line in f:
            # Split by tab
            k, v = line.split('\t')

            # Column name as key, value as  value
            df_dict[k] = v

        # Add the dictionary to list
        df_rows.append(df_dict)

# Read the list of dictionaries as a dataframe
df = pd.DataFrame(df_rows)

# Preview dataframe
df.head()
 类似资料:
  • 问题内容: 我有这个清单(): 我想要这样的东西: 换句话说,我想使用值作为分隔符将列表拆分为子列表,以获得列表列表()。我正在寻找Java 8解决方案。我已经尝试过,但是我不确定这是我要找的东西。谢谢! 问题答案: 我目前想出的唯一解决方案是实现自己的自定义收集器。 在阅读解决方案之前,我想添加一些有关此的注释。我将这个问题更多地当作编程练习,我不确定是否可以使用并行流来完成。 因此,您必须意识

  • 我有一个对象(Pos)与此模型的集合: 对象列表如下所示: 我想按beforeChangement或afterChangement==”字段拆分此对象列表要使用此格式(列表列表)

  • 问题内容: 我现在有了: 我希望有: 只是两个列表的元素加法。 我当然可以迭代两个列表,但是我不想这样做。 什么是最Python的方式这样做的? 问题答案: 使用map有: 或zip具有列表理解: 时序比较:

  • 问题内容: 我有大量的这种格式的元组列表。每个元组的第二个字段是类别字段。 将其分解为相同类别(A,B,C等)的子列表的最有效方法是什么? 问题答案: 使用itertools.groupby: 产量 或者,要创建一个将每个组作为子列表的列表,可以使用列表理解: to的第二个参数是一个适用于(第一个参数)中每个项目的函数。预期会传回。然后将相同的所有连续项目组合在一起。 operator.itemg

  • 我有一个包含字典作为元素的单列的。这是以下代码的结果: 我需要将此列拆分为尽可能多的列(我有太多的行和列,并且我无法更改函数),因此输出将是一个包含列,,的数据帧,<代码>功能50。这样做的最佳方式是什么? 一个具体而简单的例子: 但当我尝试用pd.Series或pd.DataFrame包装它时,它说如果数据是标量值,则必须提供索引。提供索引=['feature1','feature2'],我会得

  • 问题内容: 这个问题类似于将 列表切成子列表的列表 ,但是在我的情况下,我想包括每个先前子列表的最后一个元素,作为下一个子列表的第一个元素。并且必须考虑到最后一个元素必须始终至少包含两个元素。 例如: 大小为3的子列表的结果: 问题答案: 通过简单地缩短传递到范围的“ step”参数,可以轻松地将链接的答案中的列表理解用于支持重叠的块: 这个问题的其他访问者可能没有足够的精力来处理输入 列表 (可