2015-04-18 137 views
0

我已经尝试了许多不同的数据框的说明,但似乎无法通过熊猫得到这种输出成csv格式。我想我犯了一个简单的错误,但我无法弄清楚究竟是什么。它是来自nltk分类器的输出。这里是我的输出:熊猫数据框到csv与类

defaultdict(<type 'set'>, {'neg': set([3, 6, 8, 15, 21, 23, 38, 40, 44, 46, 47, 51, 52, 53, 55, 58, 62, 63, 64, 65, 66, 68, 70, 71, 72, 73, 74, 75, 76, 77, 78, 80, 81, 82, 84, 85, 86, 87, 88, 90, 91, 92, 94, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 114, 115]), 'neutral': set([50, 4, 5, 93, 95, 43, 12, 45, 14, 79, 49, 37, 67, 113, 59, 60, 29, 31]), 'pos': set([0, 1, 2, 7, 9, 10, 11, 13, 16, 17, 18, 19, 20, 22, 24, 25, 26, 27, 28, 30, 32, 33, 34, 35, 36, 39, 41, 42, 48, 54, 56, 57, 61, 69, 83, 89])}) 

回答

0

这不是很清楚的输出应该是什么,因为字典持有套,但这应该工作:

pandas.DataFrame({k: list(v) for k, v in your_output.items()}).to_csv('yourfile.csv') 
+0

我觉得像这样的业余爱好者,因为我不大熊猫但我做了你所说的以及一些变化,我不断收到此错误消息: –

+0

ValueError:数组必须全部相同长度 –

+0

这里是字典的代码: –

0

pd.DataFrame使得矩阵。如果您传递一个字典,它将使列号为dict.keys(),并为每个[i, col]元素分配第i个值dict[col][i]。这就是为什么你不能通过不同值的长度的字典。

在你的任务

你可以做这样的事情:

data = pd.DataFrame(columns=dd.keys()) 
for col, indexes in dd.items(): 
    for index in indexes: 
     data.loc[index, col] = 1 

data.fillna(0) # fill other values with 0 

data = pd.DataFrame(columns=['sentiment']) 


for col, indexes in dd.items(): 
    for index in indexes: 
     data.loc[index, 'sentiment'] = col 

其中dd是NLTK分类结果