2 回答

TA貢獻1804條經驗 獲得超2個贊
沒有必要使用
for-loop
來處理文件。數據聚合更容易完成pandas
。您的顯示沒有標題,因此請使用、 、
csv
讀取文件,并使用正確格式化日期時間列。?pandas.read_csv
header=None
parse_dates
具有日期時間的列顯示在列索引 1 處,因此
parse_dates=[1]
這假設數據從文件中的第 0 行開始并且沒有標題,如 OP 中所示。
為列創建標題
根據評論,可以使用訪問器
date
訪問的組件。'datetime'
.dt
.groupby
上name
并聚合.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)

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
抱歉,我為日期和時間創建了兩個單獨的列,但我希望您能理解
添加回答
舉報