[英]sorting rows when exporting pandas csv file
我有一個包含700k行的CSV文件,我需要做的是創建一個附加的CSV文件,該文件已提取了我需要的數據並將其排序。
因此,舉例來說,我的原始csv文件包含的數據看起來像這樣。
Name Code Date Area
Peter 01 01/01/2016 Wales
Peter 02 01/02/2017 England
Peter 34 25/02/2018 Wales
Paul 65 01/12/2015 Scotland
Paul 12 02/12/2015 Scotland
Simon 12 23/08/2016 England
Simon 12 28/09/2016 Wales
Simon 12 27/10/2018 England
我需要做的是為一個人創建一個唯一的行,但要根據代碼的創建時間(最早的日期優先)列出代碼。 我應該指出,我在Excel中對數據集進行了排序,以正確的順序列出了日期(最早的順序是最早的),以查看是否有幫助。
因此,我需要的輸出應如下所示:
Name Codes
Peter 01,02,34
Paul 65,12
Simon 12,12,12
這些代碼按最早的日期順序列出。
我對“區域”不感興趣,因為它與最終答案無關。
我已成功設法將名稱和代碼放入相關列中,但由於某些原因,這些代碼未按最早的日期列出。
我嘗試搜索此內容,但似乎無法正確地說出它以獲得相關結果。
有誰知道為什么序列不能正確導出?
我使用的代碼是:
df2 = df2.groupby ('Name')['Code'].apply(', '.join).reset_index()
df2
export_csv = df2.to_csv(r'Filelocation.csv', index = None, header = True)
謝謝
我想以下可能有效:
df2.groupby('Name')['Code'].apply(lambda x: " " % ', '.join(x))
由於我不清楚df2
為您提供什么,因此我創建了一個數據框並驗證了您的代碼,該代碼為我提供了正確的順序。 實施並讓我知道什么對您不起作用:
df = pd.DataFrame({'Name': ['Peter', 'Peter', 'Peter', 'Paul', 'Paul', 'Simon', 'Simon', 'Simon'],
'Code': ['01', '02', '34', '65', '12', '12', '12', '12']})
df
Code Name
0 01 Peter
1 02 Peter
2 34 Peter
3 65 Paul
4 12 Paul
5 12 Simon
6 12 Simon
7 12 Simon
dfn = df.groupby ('Name')['Code'].apply(', '.join).reset_index()
dfn
Name Code
0 Paul 65, 12
1 Peter 01, 02, 34
2 Simon 12, 12, 12
dfn.index = dfn.Name # Mapping index with column Name
dfn.drop(columns=['Name'], inplace=True) # Dropping column Name
dfn
Code
Name
Paul 65, 12
Peter 01, 02, 34
Simon 12, 12, 12
dfn = dfn.loc[df.Name.unique()] # Bringing dataframe into your desired order
dfn
Code
Name
Peter 01, 02, 34
Paul 65, 12
Simon 12, 12, 12
dfn.to_csv('sample.csv')
這是您需要的嗎? 如果沒有,請發表評論。
問題可能是您在將系列轉換為datetime
時未指定dayfirst=True
:
df['Date'] = pd.to_datetime(df['Date'], dayfirst=True)
然后,您可以按Date
排序並照常執行groupby
操作:
res = df.sort_values('Date')\
.groupby('Name')['Code']\
.agg(lambda x: ','.join(map(str, x)))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.