亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何讀取csv并按組聚合數據?

如何讀取csv并按組聚合數據?

尚方寶劍之說 2023-08-08 16:52:29
我們有一個 csv 文件,并在下面編寫代碼來進行分組并獲取最大值并創建輸出文件。但是,在使用數據幀 read_csv 讀取最終輸出文件時,它顯示為空。Input file: Manoj,2020-01-01 01:00:00Manoj,2020-02-01 01:00:00Manoj,2020-03-01 01:00:00Rajesh,2020-01-01 01:00:00Rajesh,2020-05-01 01:00:00Suresh,2020-04-01 01:00:00Final output file:Manoj,2020-03-01 01:00:00Rajesh,2020-05-01 01:00:00Suresh,2020-04-01 01:00:00然后當我嘗試使用 df.read_Csv 讀取上面的最終輸出文件時,它顯示數據幀為空。import osimport reimport pandas as pdz=open('outfile.csv','w')fin=[]k=open('j.csv','r')for m in k:    d=m.split(',')[0]    if d not in fin:        fin.append(d.strip())for p in fin:    gg=[]    g=re.compile(r'{0}'.format(p))    y=open('j.csv','r')    for b in y:        if re.search(g,b):            gg.append(b)    z.write(gg[-1].strip())    z.write('\n')df = pd.read_csv("outfile.csv", delimiter=',', names=['Col1','Col2'], header=0)print(df)final output: Empty DataFrame , Index: []有什么我錯過的嗎,請大家推薦一下...
查看完整描述

2 回答

?
慕婉清6462132

TA貢獻1804條經驗 獲得超2個贊

  • 沒有必要使用for-loop來處理文件。數據聚合更容易完成pandas

  • 您的顯示沒有標題,因此請使用、 、csv讀取文件,并使用正確格式化日期時間列。?pandas.read_csvheader=Noneparse_dates

    • 具有日期時間的列顯示在列索引 1 處,因此parse_dates=[1]

    • 這假設數據從文件中的第 0 行開始并且沒有標題,如 OP 中所示。

  • 為列創建標題

  • 根據評論,可以使用訪問器date訪問的組件。'datetime'.dt

  • .groupbyname并聚合.max()

import pandas as pd


# read the file j.csv

df = pd.read_csv('j.csv', header=None, parse_dates=[1])


# add headers

df.columns = ['name', 'datetime']


# select only the date component of datetime

df.datetime = df.datetime.dt.date


# display(df)

? ? ?name? ? datetime

0? ?Manoj? 2020-01-01

1? ?Manoj? 2020-02-01

2? ?Manoj? 2020-03-01

3? Rajesh? 2020-01-01

4? Rajesh? 2020-05-01

5? Suresh? 2020-04-01


# groupby

dfg = df.groupby('name')['datetime'].max().reset_index()


# display(dfg)

? ? ?name? ? datetime

0? ?Manoj? 2020-03-01

1? Rajesh? 2020-05-01

2? Suresh? 2020-04-01


# save the file. If the headers aren't wanted, use `header=False`

dfg.to_csv('outfile.csv', index=False)


查看完整回答
反對 回復 2023-08-08
?
鳳凰求蠱

TA貢獻1825條經驗 獲得超4個贊

創建數據框


import pandas as pd

df=pd.DataFrame(zip(

    ['Manoj','Manoj','Manoj','Rajesh','Rajesh','Suresh'],

    ['2020-01-01','2020-02-01','2020-03-01','2020-01-01','2020-05-01','2020-04-01'],

    ['01:00:00','01:00:00','01:00:00','01:00:00','01:00:00','01:00:00']),

    columns=['name','date','time'])

將日期和時間從字符串轉換為日期和時間對象


df['date']=pd.to_datetime(df['date'], infer_datetime_format=True).dt.date

df['time']=pd.to_datetime(df['time'],format='%H:%M:%S').dt.time

采取分組方式


out=df.groupby(by=['name','time']).max().reset_index()

您可以保存并再次加載


out.to_csv('out.csv',index=False)

df1=pd.read_csv('out.csv')

結果


    name      time        date

0   Manoj  01:00:00  2020-03-01

1  Rajesh  01:00:00  2020-05-01

2  Suresh  01:00:00  2020-04-01

抱歉,我為日期和時間創建了兩個單獨的列,但我希望您能理解


查看完整回答
反對 回復 2023-08-08
  • 2 回答
  • 0 關注
  • 158 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號