【问题标题】:Python DataFrame using a small section from a large text filePython DataFrame 使用大文本文件中的一小部分
【发布时间】:2020-04-29 19:21:10
【问题描述】:

到目前为止,这是我的代码:

import pandas as pd

with open("input.txt") as f:
    data = f.readlines()
    for line in data:
        data = {'col1': [line[':']], 'col2': [line[':']], 'col3': [line[':']], 'col4': [line[':']]}
        df = pd.DataFrame(data)
        print(df)

问题是我不断为文本文件的每一行取回单个行数据框。我需要一个完整的数据框,所有的行都在一起。文本文件本身未格式化。所以很难理解我应该如何做到这一点。有任何想法吗?

【问题讨论】:

标签: python pandas file dataframe text


【解决方案1】:

您将获得一个单行数据框,因为数据框构造函数位于遍历文件每一行的循环中。

for line in data:
    data = ...
    df = pd.DataFrame(data)

目前尚不清楚您的最终目标是什么,但我会查看pandas.read_table 的各种选项。例如,如果您只想要某些列,则有一个usecols 参数。

另一种选择是在读取文件后在 pandas 中进行数据操作。例如,如果您希望列成为列的副本,则可以使用df['col2'] = df['col1']

如果您确实需要遍历文件的每一行,则创建一个字典列表并在最后制作数据框。您可以省略 readlines 并直接迭代 f。

datadicts = []
with open("input.txt") as f:
    for line in f:
        datadicts.append({'col1': [line[':']], 'col2': [line[':']], 'col3': [line[':']], 'col4': [line[':']]})

df = pd.DataFrame(datadicts)

【讨论】:

  • 感谢您的帮助!这绝对满足了我的需要,即获取 txt 每一行中的所有单独数据帧并创建一个包含所有数据的大数据帧。
  • 现在,当我打印我的数据框时,我的每个值都被方括号括起来。知道如何摆脱这个吗?
  • col1、col2 等的值是列表。
猜你喜欢
  • 2014-03-04
  • 2020-08-18
  • 1970-01-01
  • 2013-04-23
  • 2014-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多