相关疑难解决方法(0)

在Pandas中使用带有元组索引的DataFrame.ix

我有一堆使用元组作为索引的Pandas代码.我最近遇到了访问DataFrame的单个元素的需要DataFrame.ix,这让元组感到困惑.它似乎认为我的元组是我想要访问的一系列键,而不是我想要访问的单个键(恰好是一个序列).如何提取元组是关键字的单个行?

也许这是一个不在Pandas索引中使用序列的警示故事,但在我的情况下,为时已晚.

import string, pandas as pd, numpy as np

bar = pd.DataFrame(np.random.random((8,2)))
bar.columns = ['col1', 'col2']
bar.index = list(string.ascii_lowercase)[:8]
print bar
print bar.iloc[0].name
print bar.ix[bar.iloc[0].name]

bar.index = [tuple(list(string.ascii_lowercase)[i:i+3]) for i in range(8)]
print bar.iloc[0].name
print bar.ix[bar.iloc[0].name] # Fails with `KeyError: 'a'`
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

3
推荐指数
1
解决办法
2355
查看次数

如何使用列表从嵌套字典构建MultiIndex Pandas DataFrame

我有以下字典.

d= {'key1': {'sub-key1': ['a','b','c','d','e']},
    'key2': {'sub-key2': ['1','2','3','5','8','9','10']}}
Run Code Online (Sandbox Code Playgroud)

这篇文章的帮助下,我成功地将这个字典转换为DataFrame.

df = pd.DataFrame.from_dict({(i,j): d[i][j] 
                            for i in d.keys() 
                            for j in d[i].keys()},
                            orient='index')
Run Code Online (Sandbox Code Playgroud)

但是,我的DataFrame采用以下形式:

                  0  1  2  3  4     5     6
(key1, sub-key1)  a  b  c  d  e  None  None
(key2, sub-key2)  1  2  3  5  8     9    10
Run Code Online (Sandbox Code Playgroud)

我可以使用元组作为索引值,但我认为使用多级DataFrame更好.像这样的帖子帮助我分两步创建它,但是我很难一步完成(即从最初的创建),因为字典中的列表以及之后的元组添加了一个级别并发症.

python dictionary multi-index dataframe pandas

2
推荐指数
1
解决办法
2099
查看次数

标签 统计

dataframe ×2

pandas ×2

python ×2

dictionary ×1

multi-index ×1