【问题标题】:selecting only relevant columns within a file - python仅选择文件中的相关列 - python
【发布时间】:2023-03-24 13:58:01
【问题描述】:

假设我有一个包含以下标题和数据的文件“test.csv”:

h1  c1  h2  h3  c2
1   0   2   3   1
3   0   2   1   0
0   1   2   3   3

python 中仅选择并保存感兴趣的列并丢弃所有其他列的最佳选择是什么?

假设我只对保存 h 列感兴趣,我想到了以下几点:

f = open('test.csv')
s = save('new_test.csv', data = f, saveColumns=['h1','h2','h3'])´

n = load('new_test.csv')
print n

h1  h2  h3
1   2   3
3   2   1
0   2   3

【问题讨论】:

  • 这是个麻木的东西吗?
  • 这个post 完成了非常相似的事情。
  • 如果没有块状,我会为每个标题制作一个字典,并将值作为字典列表加载。然后在最后,打印出有效的条目。您将需要一个字典列表以保持列顺序。
  • 您可以使用 awk 将数据传递给 python,并且只给它您想要的列。
  • 但最后,numpy = 有​​用 + 容易多了

标签: python file save


【解决方案1】:
f = open("test.csv")
header = {i: x for i, x in enumerate(f.readline().split())}
columns = ('h1','h2','h3')
for l in f:
    print [x for i, x in enumerate(l.split()) if header[i] in columns]

【讨论】:

    【解决方案2】:

    我找到了一种非常简单的方法:

    import pandas as pd
    selectColumns = ['h1','h2','h3']
    table = pd.read_csv('test.csv')
    tableNew = table[selectColumns]
    pd.to_csv('tableNew')
    

    【讨论】:

      【解决方案3】:
      >>> d=csv.DictReader(open("some.csv"),delimiter="\t")
      >>> fields = ["h1","h2","h3"]
      >>> new_rows = [[row[f] for f in fields] for row in d]
      >>> d=csv.DictWriter(open("new_csv.csv","w"),fields,delimiter="\t")
      >>> d.writerows(new_rows)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-17
        • 2014-09-08
        • 1970-01-01
        • 1970-01-01
        • 2016-05-22
        • 2021-12-24
        相关资源
        最近更新 更多