便携式,机器可读的方式来存储来自多个CSV文件的列名

时间:2014-10-20 02:20:52

标签: python bash data-structures

现在我有一个包含几个以逗号分隔的数据文件的文件夹,我想提取它们的列名以存储在某种索引中供以后参考。在R和Python中,这些数据将被Mac和Windows机器上的多个人使用(因此新行可能会出现问题)。

理想情况下,我想编写或使用以正则表达式作为参数的脚本,并返回包含该列名的文件名列表。例如。我可以编写cl col 'Years at',并使用包含文本Years atcl file 'Academic Data'的列返回所有文件,并返回该文件中的所有列名。

我只有几个文件,每个文件只有几列,但我希望能够将其扩展到我有大量文件和/或每个文件有大量文件的情况列。

是否有最佳实践"在这种情况下?是否有正确的方式"存储这些数据?我正在考虑使用JSON,但我能想到将其转换为JSON格式的唯一方法是手动echo所有大括号和新行,这将是丑陋的。我不知道如何取回数据。


这是我目前的解决方案:

find . -iname "*.csv" | while read f; do
    echo -e "$f\n$(tr "\r" "\n" < "$f" | head -n1)\n" >> column_index.txt
done

产生:

./File 1.csv
column 1, column 2, column 3

./File 2.csv
column 1, column 2, column 3

它存在两个问题:1)它在bash中,因此Windows用户无法在没有Cygwin的情况下使用它2)输出可读但很难安全解析。问题2是问题的关键。但我会很高兴听到以某种方式解决问题1的建议。

1 个答案:

答案 0 :(得分:0)

您可以使用Python.Pandas来处理CSV文件。

df= pd.read_csv(name)
print df.columns # will print all the columns, 

选中此tutorial for more details

我建议:

  • 循环显示所有csv文件,存储列及其原始文件。

  • 将这些信息存储在另一个csv文件(或json)上。

  • 编写一个在此csv中进行研究的python脚本,因此任何win / mac用户都可以使用它。