【发布时间】:2021-09-14 19:04:32
【问题描述】:
我有一个数据集,其中有几千条记录。列是帐号、代码、数据。
如果它们具有相同的帐户编号(第 1 列),我需要根据代码(第 2 列)对整行进行排序。所以像这样。
df = DataFrame({'Acct Number':[1011,1011,1011,1011,1012,1012,1012,1012,1012],
'Code':['GHI','JKL','ABC','DEF','DEF','MNO','JKL','GHI','ABC'],
'Data':['text3','text4','text1','text2','text2','text5','text4','text3','text1'])
我需要知道如何制作如下所示的数据框:
df = DataFrame({'Acct Number':[1011,1011,1011,1011,1012,1012,1012,1012,1012],
'Code':['ABC','DEF','GHI','JKL','ABC','DEF','GHI','JKL','MNO'],
'Data':['text1','text2','text3','text4','text1','text2','text3','text4','text5'])
代码(column2)不按字母顺序排列 - 它们是随机字母,因此我无法使用基本排序来按顺序排列这些行。
我正在尝试使用 set_index() 来研究 groupby() 就像在这个问题中一样:
Question #66650446 - Pandas Groupby based on multiple columns
我正在尝试这样的事情。
import pandas as pd
THEFILE = 'original csv file'
THENEWFILE = 'the new csv file'
df = pd.read_csv('THEFILE')
df = df.set_index(['acct_number',df.groupby('code':'CFV','VFC','GTF','EDD','TGY'])
df = df.to_csv(THENEWFILE)
如果 groupby() 中的语法设置在一个已经先按不同列排序的索引中,我不确定它用于识别我想要的特定顺序。
非常感谢所有帮助!
更新:截至 21 年 7 月 2 日太平洋时间下午 3:28,我发现了这个问题:
【问题讨论】:
-
我试图传达 column2 中的值不是按字母顺序排列的,但我需要将它们按特定顺序排列。我认为现在我正在阅读更多@DavidErickson,自定义词典会做到这一点
标签: python-3.x pandas dataframe indexing concatenation