Python 如何在DataFrame中保存groupby对象
我有以下数据帧:Python 如何在DataFrame中保存groupby对象,python,python-3.x,pandas,group-by,pandas-groupby,Python,Python 3.x,Pandas,Group By,Pandas Groupby,我有以下数据帧: Name ID Month Shift Jon 1 Feb A Jon 1 Jan B Jon 1 Mar C Mike 1 Jan A Mike 1 Jan B Jon 1 Feb C Jon 1 Jan A 我想把下面的数据作为groupby,但我不能这样做。请帮帮我 df.groupby(['Name','ID','Shi
Name ID Month Shift
Jon 1 Feb A
Jon 1 Jan B
Jon 1 Mar C
Mike 1 Jan A
Mike 1 Jan B
Jon 1 Feb C
Jon 1 Jan A
我想把下面的数据作为groupby,但我不能这样做。请帮帮我
df.groupby(['Name','ID','Shift']).
这行吗
df = pd.DataFrame(
data=[['Jon', 1, 'Feb', 'A'],
['Jon', 1, 'Jan', 'B'],
['Jon', 1, 'Mar', 'C'],
['Mike', 1, 'Jan', 'A'],
['Mike', 1, 'Jan', 'B'],
['Jon', 1, 'Feb', 'C'],
['Jon', 1, 'Jan', 'A']],
columns=['Name', 'ID', 'Month', 'Shift']
)
empty_rows = pd.DataFrame(
data=[[name, '', '', ''] for name in df['Name'].unique()],
columns=list(df)
)
df = pd.concat([df, empty_rows])
# this will need to be extended if you have additional months
df['Month'] = pd.Categorical(df['Month'], ['', 'Jan', 'Feb', 'Mar'])
df = df.set_index(['Name','Month']).sort_values(['Name', 'Month'])
在excel文件中读取:
df = pd.read_excel(
r'C:\Users\dell\Desktop\stats.xlsx',
sheet_name='Sheet5',
usecols=['Name', 'ID', 'Month', 'Shift']
)
这行吗
df = pd.DataFrame(
data=[['Jon', 1, 'Feb', 'A'],
['Jon', 1, 'Jan', 'B'],
['Jon', 1, 'Mar', 'C'],
['Mike', 1, 'Jan', 'A'],
['Mike', 1, 'Jan', 'B'],
['Jon', 1, 'Feb', 'C'],
['Jon', 1, 'Jan', 'A']],
columns=['Name', 'ID', 'Month', 'Shift']
)
empty_rows = pd.DataFrame(
data=[[name, '', '', ''] for name in df['Name'].unique()],
columns=list(df)
)
df = pd.concat([df, empty_rows])
# this will need to be extended if you have additional months
df['Month'] = pd.Categorical(df['Month'], ['', 'Jan', 'Feb', 'Mar'])
df = df.set_index(['Name','Month']).sort_values(['Name', 'Month'])
在excel文件中读取:
df = pd.read_excel(
r'C:\Users\dell\Desktop\stats.xlsx',
sheet_name='Sheet5',
usecols=['Name', 'ID', 'Month', 'Shift']
)
非常相似。非常相似。但是我们可以每月也排序吗?从2月份开始。我想同意Format,也就是我在我的查询中显示为oputputI的名称下面的一行。我已经更新了我的答案,包括空行和monthwow Kait排序。。你太棒了。。是的,它工作得很好,但有一点值得怀疑。因为每个月的数据都会增加。我的意思是这个月也会是4月的4月和5月的5月,依此类推到12月。所以可以使用下面的代码df['Month']=pd.Categorical(df['Month'],['''Jan','Feb','Mar','Apr','May','Jun','jul','Aug','sep','oct','Nov','Dec'])。。因此,当我们有数据时,我们的数据框架中的数据将相应地工作。
df.index=df.index.map(lambda x:x[0]如果x[1]=''else x[1])
df.rename\u axis('Name')
您可能会发现这很有帮助:但是我们可以每月进行排序吗?从2月份开始。我想同意Format,也就是我在我的查询中显示为oputputI的名称下面的一行。我已经更新了我的答案,包括空行和monthwow Kait排序。。你太棒了。。是的,它工作得很好,但有一点值得怀疑。因为每个月的数据都会增加。我的意思是这个月也会是4月的4月和5月的5月,依此类推到12月。所以可以使用下面的代码df['Month']=pd.Categorical(df['Month'],['''Jan','Feb','Mar','Apr','May','Jun','jul','Aug','sep','oct','Nov','Dec'])。。因此,当我们有数据时,我们的数据框中的数据将相应地工作。df.index=df.index.map(lambda x:x[0]如果x[1]=''else x[1])
df.rename\u axis('Name')
您可能会发现这很有帮助: