【问题标题】:Creating multiple csv files from existing csv file python pandas从现有的 csv 文件 python pandas 创建多个 csv 文件
【发布时间】:2019-03-24 21:15:50
【问题描述】:

我正在尝试获取一个大的 csv 文件并为两列的排序编写一个 csv 文件。我能够从文件中获取两个单独的唯一值,以便能够知道需要创建哪些 csv 文件。
前数据:

1,224939.203,1243008.651,1326.774,F,C-GRAD-FILL,09/22/18 07:24:34,
1,225994.242,1243021.426,1301.772,BS,C-GRAD-FILL,09/24/18 08:24:18,
451,225530.332,1243016.186,1316.173,GRD,C-TOE,10/02/18 11:49:13,
452,225522.429,1242996.017,1319.168,GRD,C-TOE KEY,10/02/18 11:49:46,

我想创建一个 csv 文件“C-GRAD-FILL 09-22-18.csv”,其中包含与这两个值匹配的所有数据。我无法决定如何遍历这两个值的数据。

def readData(fileName):
    df = pd.read_csv(fileName,index_col=False, names+['Number','Northing','Easting','Elevation','Description','Layer','Date'],parse_dates=['Date'] )
    ##Layers here!!!
    layers = df['Layer'].unique()
    ##Dates here!!! AS DATETIME OBJECTS!!!!
    dates = df['Date'].map(lambda t: t.date()).unique()
    ##Sorted in order
    sortedList = df.sort_values(by=['Layer','Date'])

【问题讨论】:

    标签: python pandas csv pandas-groupby


    【解决方案1】:

    您可以使用GroupBy 对象。首先确保您的日期是正确的字符串格式:

    df['Date'] = pd.to_datetime(df['Date']).dt.strftime('%m-%d-%y')
    

    要输出所有文件,请迭代 GroupBy 对象:

    for (layer, date), group in df.groupby(['Layer', 'Date']):
        group.to_csv(f'{layer} {date}.csv', index=False)
    

    或者,对于一种特定的组合:

    layer = 'C-GRAD-FILL'
    date = '09-22-18'
    g = df.groupby(['Layer', 'Date'])
    
    g.get_group((layer, date)).to_csv(f'{layer} {date}.csv', index=False)
    

    【讨论】:

    • @Abhi,在我的示例中,我们将其明确定义为字符串:date = '09-22-18'。但是,如果您从 pd.Timestamp 对象开始,您可以轻松切换到字符串,例如date = my_timestamp.strftime('%m-%d-%y').
    • jpp 的工作完美!现在我需要弄清楚如何在编写 csv 时删除最后两列。直到现在我才意识到它们是不必要的。
    猜你喜欢
    • 1970-01-01
    • 2011-02-06
    • 2021-09-17
    • 2018-06-11
    • 2015-10-25
    • 2018-02-12
    • 1970-01-01
    • 2012-08-28
    • 1970-01-01
    相关资源
    最近更新 更多