按列中的名称对pandas DataFrame中的数据进行排序

午休

嗨,我在对Pandas DataFrame中的某些数据进行排序时遇到问题。数据的格式与我习惯的格式不同,并且我不知道如何使其工作。我要排序的数据采用以下格式:

[['2016-05-23', 'name1', 'data1'],
['2016-05-23', 'name2', 'data2'],
['2016-05-24', 'name1', 'data1'],
['2016-05-24', 'name2', 'data2'],
['2016-05-25', 'name1', 'data1'],
['2016-05-25', 'name2', 'data2'],
['2016-05-26', 'name1', 'data1'],
['2016-05-26', 'name2', 'data2'],
['2016-05-27', 'name1', 'data1'],
['2016-05-27', 'name2', 'data2']]

我想做的是在日期上进行排序,并以名称作为列名。

[['2016-05-23, 'data1', 'data2'],
['2016-05-24', 'data1', 'data2'],
['2016-05-25', 'data1', 'data2'] and so on...]

是否可以使用某些特定的pandas命令来执行此操作,我还希望该解决方案可以仅使用两个name列进行处理。我不知道如何执行此操作,将对您有所帮助。

耶斯列尔

我认为您需要pivot

import pandas as pd

df = pd.DataFrame([['2016-05-23', 'name1', 'data1'],
['2016-05-23', 'name2', 'data2'],
['2016-05-24', 'name1', 'data1'],
['2016-05-24', 'name2', 'data2'],
['2016-05-25', 'name1', 'data1'],
['2016-05-25', 'name2', 'data2'],
['2016-05-26', 'name1', 'data1'],
['2016-05-26', 'name2', 'data2'],
['2016-05-27', 'name1', 'data1'],
['2016-05-27', 'name2', 'data2']], columns = ['a','b','c'])

print (df)
            a      b      c
0  2016-05-23  name1  data1
1  2016-05-23  name2  data2
2  2016-05-24  name1  data1
3  2016-05-24  name2  data2
4  2016-05-25  name1  data1
5  2016-05-25  name2  data2
6  2016-05-26  name1  data1
7  2016-05-26  name2  data2
8  2016-05-27  name1  data1
9  2016-05-27  name2  data2
#convert column a to datetime
df['a'] = pd.to_datetime(df.a)

print (df.pivot(index='a', columns='b', values='c'))
b           name1  name2
a                       
2016-05-23  data1  data2
2016-05-24  data1  data2
2016-05-25  data1  data2
2016-05-26  data1  data2
2016-05-27  data1  data2

然后,如果您需要sort_values例如按列name1

import pandas as pd

df = pd.DataFrame([['2016-05-23', 'name1', 9],
['2016-05-23', 'name2', 4],
['2016-05-24', 'name1', 5],
['2016-05-24', 'name2', 1],
['2016-05-25', 'name1', 5],
['2016-05-25', 'name2', 7],
['2016-05-26', 'name1', 10],
['2016-05-26', 'name2', 7],
['2016-05-27', 'name1', 0],
['2016-05-27', 'name2', 1]], columns = ['a','b','c'])
print (df)
            a      b   c
0  2016-05-23  name1   9
1  2016-05-23  name2   4
2  2016-05-24  name1   5
3  2016-05-24  name2   1
4  2016-05-25  name1   5
5  2016-05-25  name2   7
6  2016-05-26  name1  10
7  2016-05-26  name2   7
8  2016-05-27  name1   0
9  2016-05-27  name2   1

print (df.pivot(index='a', columns='b', values='c').sort_values('name1'))
b           name1  name2
a                       
2016-05-27      0      1
2016-05-24      5      1
2016-05-25      5      7
2016-05-23      9      4
2016-05-26     10      7

有时pivot不起作用,然后使用pivot_table

print (df.pivot_table(index='a', columns='b', values='c'))

但是pivot_table使用aggfunc,默认为aggfunc=np.mean重复。有关示例的更好解释在此处和在docs中


最后你可以reset_indexrename_axis(新的pandas 0.18.0):

print (df.pivot(index='a', columns='b', values='c')
         .reset_index()
         .rename_axis(None, axis=1))
            a  name1  name2
0  2016-05-23      9      4
1  2016-05-24      5      1
2  2016-05-25      5      7
3  2016-05-26     10      7
4  2016-05-27      0      1

#pandas bellow 0.18.0
df1 = df.pivot(index='a', columns='b', values='c').reset_index()
df1.columns.name = None
print (df1)
            a  name1  name2
0  2016-05-23      9      4
1  2016-05-24      5      1
2  2016-05-25      5      7
3  2016-05-26     10      7
4  2016-05-27      0      1

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

按特定顺序对Pandas DataFrame中的列进行排序

按另一个数据框中的一列对pandas DataFrame进行排序-Pandas

对Pandas Dataframe列中的列表进行排序

在Pandas DataFrame中对列进行排序

在DataFrame中对列进行排序

如何按两列或更多列对python pandas中的dataFrame进行排序?

如何在Excel中按数据对列进行排序/排序

按字母顺序对Pandas数据框中的数据进行排序

在Android中按名称对JSON数据进行排序

如何按Python(pandas)列中的出现次数对数据框进行排序

如何在Pandas数据框中按行值对日期时间列进行排序?

按列对数据框中的某些行进行排序

按R中的ALL列对数据框进行排序

按mysql和wordpress列对表中的数据进行排序

同时按多列对R中的数据框进行排序

如何按数据库中的列对表进行排序?

在Magento中按名称对产品进行排序

如何在pandas数据框中对字符串列进行排序,在其中强制按该列排序的字母顺序?

按名称列表对Pandas中的多个列进行切片

根据列名称对pandas数据框中的列重新排序

在Pandas Dataframe中按一列排序,然后按另一列分组?

对pandas数据框中的多个文本列的值进行排序

在R中对多列数据进行排序

对新数据中的列进行排序

获取列的名称,并在dataframe pandas中从中创建数据

按多列和重复索引对pandas DataFrame进行排序

如何按分配的名称对列进行数据排序

Pandas Dataframe按列排序

在Spark DataFrame中对结构数组进行排序

TOP 榜单

热门标签

归档