我有一个数据集:
a b c
99-01-11 8 367235
99-01-11 5 419895
99-01-11 1 992194
99-03-23 4 419895
99-04-30 1 992194
99-06-02 9 419895
99-08-08 2 367235
99-08-12 3 419895
99-08-17 10 992194
99-10-22 3 419895
99-12-04 4 992194
00-03-04 2 367235
00-09-29 9 367235
00-09-30 9 367235
我使用以下代码将其更改为数据透视表:
df = (pd.read_csv('orcs.csv'))
df_wanted = pd.pivot_table(df, index=['c'], columns=['a'], values=['b'])
我的目标:我正在尝试获取数据透视表中列名称的列表。换句话说,我试图得到这个:
['1999-01-11','1999-01-11','1999-01-11','1999-03-23','1999-04-30','1999-06-02','1999-08-08']
我试图使用这段代码:
y= df_wanted.columns.tolist()
但这给了我一个包含原始列名和数据透视表的新列名的列表:
[('c', '00-03-04'), ('c', '00-09-29'), ('c', '00-09-30'), ('c', '99-01-11'), ('c', '99-03-23'), ('c', '99-04-30'), ('c', '99-06-02'), ('c', '99-08-08'), ('c', '99-08-12'), ('c', '99-08-17'), ('c', '99-10-22'), ('c', '99-12-04')]
我尝试以多种方式删除“ c”,例如
def remove_values_from_list(the_list, val):
while val in the_list:
the_list.remove(val)
remove_values_from_list(y, 'c')
但没有运气。有谁知道如何解决这个问题? PS。保持列表的顺序很重要,因为我将其用作线图的
y
值数组。非常感谢。
最佳答案
最好的方法是先在[]
中省略pivot_table
以免在列中使用MultiIndex
,然后将tolist()
与强制转换为string
一起使用:
df_wanted = pd.pivot_table(df,index='c',columns='a',values='b')
#print (df_wanted)
print (df_wanted.columns.astype(str).tolist())
['1999-01-11', '1999-03-23', '1999-04-30', '1999-06-02', '1999-08-08',
'1999-08-12', '1999-08-17', '1999-10-22', '1999-12-04',
'2000-03-04', '2000-09-29', '2000-09-30']