Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pandas 从多元组列中删除单个元组_Pandas - Fatal编程技术网

Pandas 从多元组列中删除单个元组

Pandas 从多元组列中删除单个元组,pandas,Pandas,我有以下数据帧: <bound method DataFrame.info of <class 'pandas.core.frame.DataFrame'> MultiIndex: 369416 entries, (datetime.datetime(2008, 1, 2, 16, 0), 'ABC') to (datetime.datetime(2010, 12, 31, 16, 0), 'XYZ') Data columns: b_val 369416 no

我有以下数据帧:

<bound method DataFrame.info of <class 'pandas.core.frame.DataFrame'>
MultiIndex: 369416 entries, (datetime.datetime(2008, 1, 2, 16, 0), 'ABC') to     (datetime.datetime(2010, 12, 31, 16, 0), 'XYZ')
Data columns:
b_val    369416  non-null values
dtypes: float64(1)>
但这给了我:

<bound method DataFrame.info of <class 'pandas.core.frame.DataFrame'>
Index: 757 entries, 2008-01-02 16:00:00 to 2010-12-31 16:00:00
Columns: 488 entries, ('b_val', 'ABC') to ('b_val', 'XYZ')
dtypes: float64(488)>

有没有办法将其转换为另一种方式,或者有没有办法从每个列名中删除“b_val”?

我认为这样做是正确的

您可以使用
droplevel
,从列名(多索引)中删除第一个级别:

df.columns = df.columns.droplevel(0)
下面是一个例子:

df = pd.DataFrame([[1, 'a', 22], [1, 'b', 27], [2, 'a', 35], [2, 'b', 56]], columns=['date', 'name', 'value']).set_index(['date','name'])
df1 = df.unstack()

In [3]: df1
Out[3]:
      value
name      a   b
date
1        22  27
2        35  56

In [4]: df1.columns = df1.columns.droplevel(0)

In [5]: df1
Out[5]:
name   a   b
date
1     22  27
2     35  56
但是,更清洁的选项仅适用于列(系列):


谢谢你,安迪!我曾一度尝试使用droplevel(0),但我将结果分配给df而不是df.columns,结果只使用col名称作为数据帧。我不知道发生了什么:-/@pynewbie现在我想,解开这个系列是一个“更干净”的方法。我一直保持在液滴水平(因为这回答了标题中的问题):)
df = pd.DataFrame([[1, 'a', 22], [1, 'b', 27], [2, 'a', 35], [2, 'b', 56]], columns=['date', 'name', 'value']).set_index(['date','name'])
df1 = df.unstack()

In [3]: df1
Out[3]:
      value
name      a   b
date
1        22  27
2        35  56

In [4]: df1.columns = df1.columns.droplevel(0)

In [5]: df1
Out[5]:
name   a   b
date
1     22  27
2     35  56
In [6]: df.value.unstack()
Out[6]:
name   a   b
date
1     22  27
2     35  56