打开ZIP文件,扫描其中的CSV文件并将特定内容传输到另一个CSV文件

时间:2018-03-28 10:12:34

标签: python pandas csv

以下代码查看ZIP文件夹中的CSV文件,然后使用索引设置的概念,尝试提取包含条目" HINDUNILVR"在一系列日期(读取ZIP文件)中,每个CSV文件(此代码段位于另一个循环内)的列" SYMBOL"中。但是,代码中存在一些问题,因为我的" stock.csv"中没有输出。 C:中存在的文件。运行此代码后它为空。

预期的输出文件说明:

一个名为" stock.csv"的CSV文件;包含第一列为SYMBOL,其中HINDUNILVR作为该列每个单元格中的条目,后面是与同一行中每天的库存相关的许多价格和详细信息。

Python代码:

if(int(str(sdate.day))<10):

     df1 = pd.read_csv(zf.open("cm" + "0" + str(sdate.day) + MonthCode(sdate.month) + str(sdate.year) + "bhav.csv"))

   else:

     df1 = pd.read_csv(zf.open("cm" + str(sdate.day) + MonthCode(sdate.month) + str(sdate.year) + "bhav.csv"))

   df2 = df1.set_index("SYMBOL", drop = False)

   saved_row = df2.loc["HINDUNILVR",:]

      with open_file('C:\stock.csv','a') as f:
        saved_row.to_csv(f,header=False)

1 个答案:

答案 0 :(得分:2)

根据我的理解,您只需要将SYMBOL='HINDUNILVR'的所有行复制到新文件中。 下面的示例代码读取相同的文件并写回同一文件。您可以根据需要更改文件名:

import pandas as pd
import os
df1 = pd.read_csv("Sample.csv")
df2 = df1[df1["SYMBOL"]=="HINDUNILVR"]
with open('Sample.csv','a+') as f:
    df2.to_csv(f,header=False,index=False)

import pandas as pd
import os
df1 = pd.read_csv("Sample.csv")
df2 = df1[df1["SYMBOL"]=="HINDUNILVR"]
df2.to_csv("Sample.csv",header=False,mode='a+',index=False)

或代码更新:

 if(int(str(sdate.day))<10):
    df1 = pd.read_csv(zf.open("cm" + "0" + str(sdate.day) + MonthCode(sdate.month) + str(sdate.year) + "bhav.csv"))
else:
    df1 = pd.read_csv(zf.open("cm" + str(sdate.day) + MonthCode(sdate.month) + str(sdate.year) + "bhav.csv"))
df2 = df1[df1["SYMBOL"]=="HINDUNILVR"]
df2.to_csv("C:\stock.csv",mode='a+',header=False,index=False)

    if(int(str(sdate.day))<10):
    df1 = pd.read_csv(zf.open("cm" + "0" + str(sdate.day) + MonthCode(sdate.month) + str(sdate.year) + "bhav.csv"))
else:
    df1 = pd.read_csv(zf.open("cm" + str(sdate.day) + MonthCode(sdate.month) + str(sdate.year) + "bhav.csv"))
df2 = df1[df1["SYMBOL"]=="HINDUNILVR"]
with open('C:\stock.csv','a+') as f:
    df2.to_csv(f,header=False,index=False)