从一个单元格中获取数据并将其写入Pandas中的json字符串

时间:2016-07-31 14:11:33

标签: python pandas

我是Pandas新手,我想创建一个csv文件中的数据的json摘要。这个json摘要将填充我的csv的最后一列,并命名为" Holder"。我的csv文件如下:

pk,Pure_Math,Pure_Math_Notes,Applied_Math,Applied_Math_Notes,Stats,Stats_Notes,Grammar,Grammar_Notes,Lit,Lit_Notes,Holder
1,0,,-1,Good student,0,,-1,Gr8 potential,0,,
2,-1,Fair,0,,0,,0,,-1,Hard worker,
3,-1,Brilliant,-1,Masters material,-1,Outstanding,0,,0,,

对于每门课程,我想连续获取所有数据并将其附加到最后一列。我的代码如下

import pandas as pd
from pandas import DataFrame
import pandas.io.data
import numpy as np
import json

    df = pd.read_csv('c:\censored.csv')

    col_array = np.array([
            ["Pure_Math", "Pure_Math_Notes", "Applied_Math", "Applied_Math_Notes", "Stats", "Stats_Notes"],
            ["Grammar", "Grammar_Notes", "Lit", "Lit_Notes"]
    ])

    a = ''
    b = ''
    c = ''

    df.fillna('')
    df.Holder = ''
    count = 0
    substrategy = 0
    for cat in col_array:
        count += 1
        for innercat in cat:        
            if "_Notes" in innercat:
                b = df[innercat]
                #print b
                continue
            substrategy += 1
            c = count
            a = substrategy
            odata = {}
            odata['did'] = a
            odata['id'] = a        
            odata['data'] = {}
            #odata['data']['notes'] = b
            odata['data']['notes'] = ''
            odata['data']['coursecode'] = a
            odata['data']['department'] = c
            df.loc[df[innercat] == -1, 'Holder'] += json.dumps(odata) + ', ' 

代码正常工作,直到我取消注释行

#odata['data']['notes'] = b

我收到TypeError: 0 NaN错误。我相信在json转换期间遇到NaN会导致pandas失败。我该怎么做才能纠正这个问题? 我已尝试将所有NaN值设置为空格,但它无效。

0 个答案:

没有答案