Pandas 使用多行作为 DataFrame 中的 MultiIndex 列

苹果

在 Pandas 中加载 CSV 时,您可以轻松指定用作列索引的行数,如下所示:

import pandas
from six import StringIO
df = """a | X | X  | Y | Y  | Z  | Z
        b | C | N  | C | N  | C  | N
        c | i | i  | i | j  | j  | j
        d | 3 | 10 | 4 | 98 | 81 | 0"""
df = StringIO(df.replace(' ',''))
df = pandas.read_csv(df, sep="|", header=[0,1,2])

>>> df
   a  X      Y       Z
   b  C   N  C   N   C  N
   c  i   i  i   j   j  j
0  d  3  10  4  98  81  0

但是如何从内存中的 Dataframe 产生相同的结果呢?您如何简单地指定应将哪一组行用于列索引?

当然没有通过这个黑客:

>>> df

   0  1   2  3   4   5  6
0  a  X   X  Y   Y   Z  Z
1  b  C   N  C   N   C  N
2  c  i   i  i   j   j  j
3  d  3  10  4  98  81  0

path = '~/test/temp.csv'
df.to_csv(path, header=None, index=None)
df = pandas.read_csv(path, header=[0,1,2])

甚至这个黑客:

>>> df

   0  1   2  3   4   5  6
0  a  X   X  Y   Y   Z  Z
1  b  C   N  C   N   C  N
2  c  i   i  i   j   j  j
3  d  3  10  4  98  81  0

df = df.transpose().set_index([0,1,2]).transpose()

我尝试使用此方法,但它不接受axis参数:

df.set_index(['a', 'b', 'c'], axis=1)
耶斯列

您的替代解决方案应该有所改进:

df = df.T.set_index([0,1,2]).T

另一个没有转置的解决方案:

df.columns = pd.MultiIndex.from_tuples(df.iloc[:3].apply(tuple))
df = df.iloc[3:].reset_index(drop=True)
print (df)
   a  X      Y       Z   
   b  C   N  C   N   C  N
   c  i   i  i   j   j  j
0  d  3  10  4  98  81  0

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

对 pandas MultiIndex DataFrame 中的多级列求和

具有MultiIndex列的Pandas DataFrame中的布尔索引

如何使用 MultiIndex 列对 Pandas DataFrame 进行分组?

如何使用Pandas MultiIndex DataFrame中的先前值进行计算?

在MultiIndex DataFrame Pandas中选择子列

在创建MultiIndex列时合并Pandas DataFrame

使用Pandas MultiIndex选择多层DataFrame的行

从MultiIndex Pandas数据框中删除列

重命名Pandas中的MultiIndex列

筛选MultiIndex Pandas DataFrame

更新 Pandas MultiIndex DataFrame

pandas DataFrame使用不同的列类型创建,访问,追加MultiIndex-SQL表样式

根据列值对具有MultiIndex的pandas DataFrame进行排序

将列添加到Pandas MultiIndex DataFrame

如何在Pandas MultiIndex DataFrame中联接列值?

使用MultiIndex执行GroupBy之后,从Pandas DataFrame .csv文件中删除引号和括号。

Pandas - 使用 MultiIndex DataFrame 的索引切入 DataFrame

使用MultiIndex删除DataFrame中的对称对

如何使用Pivot将2列转换为Pandas中的列multiindex

如何切片具有MultiIndex索引和MultiIndex列的Pandas DataFrame?

如何将Pandas Dataframe MultiIndex行转换为MultiIndex列?

列计算中的Pandas MultiIndex DataFrame参考索引值

如何在MultiIndex Pandas DataFrame中设置索引值?

在具有multiindex的pandas Dataframe中,如何按顺序过滤?

在Pandas Dataframe中查询Multiindex-特殊索引

Python:使用 Pandas Dataframe 中的列

在熊猫MultiIndex DataFrame中按级别求和列

Pandas Dataframe Mul在Multiindex上

使用multiIndex将Pandas DataFrame转换为Series