【问题标题】:How to split csv file in fixed number of columns in python?如何在python中将csv文件拆分为固定数量的列?
【发布时间】:2021-08-25 05:47:30
【问题描述】:

您好,我有一个包含 622 列的 csv 文件。我需要将它分成 100-100 列。我尝试了一些代码,但没有得到输出。请告诉我我在这里做错了什么。

例子:

文件 - cleanBaby.csv

在我想要的输出中:

cleanBaby1.csv ---- 1 to 100 columns
cleanBaby2.csv ---- 101 to 200 
cleanBaby3,csv ---- 201 to 300
cleanBaby4.csv ---- 301 to 400
cleanBaby5.csv ---- 401 to 500
cleanBaby6.csv ---- 501 to 600
cleanBaby7.csv ---- 601 to 622

我试过下面的代码-

df = pd.read_csv(r"D:\Users\SPate233\Downloads\iMedical\raw_layer\cleanBaby.csv", delimiter=',')
lst = df.columns

print(len(lst))
csvfile = open(r'D:\Users\SPate233\Downloads\iMedical\raw_layer\cleanBaby.csv', 'r', encoding='utf-8').readlines()
def chunks(lst, n):
    for i in range(0, len(lst), n):
        yield lst[i:i + n]

for n, headers_chunk in enumerate(chunks(lst, 100)):
    with open(r"D:\Users\SPate233\Downloads\iMedical\raw_layer\cleanBaby{}.csv".format(n), "w") as f:
        for header in headers_chunk:
            f.write(header + ",")
            f.writelines(csvfile[n+100:n])

【问题讨论】:

    标签: python python-3.x pandas dataframe csv


    【解决方案1】:

    使用pandas.DataFrame.groupbyenumerate 的一种方式:

    # Sample data
    df = pd.DataFrame(np.random.random((500, 622)))
    
    # Make grouper
    indices = np.arange(df.shape[1])//100
    
    for n, (k, d) in enumerate(df.groupby(indices, axis=1), 1):
        name = "test%s.csv" % n
        print(name, d.shape)
        d.to_csv(name, index=False)
    

    输出:

    test1.csv (500, 100)
    test2.csv (500, 100)
    test3.csv (500, 100)
    test4.csv (500, 100)
    test5.csv (500, 100)
    test6.csv (500, 100)
    test7.csv (500, 22)
    

    【讨论】:

    • 在第一列之前的每个文件中都有额外的“,”。
    • @ShivikaPatel 是的。默认情况下它是True,并将索引保​​存到文件中。我已经编辑了我的答案
    猜你喜欢
    • 2016-10-07
    • 1970-01-01
    • 1970-01-01
    • 2020-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-11
    • 1970-01-01
    相关资源
    最近更新 更多