在做json格式的数据处理,好心人整成了csv文件,问题在于有的数据是list类型的,读csv读成了dataframe,所以在处理df数据、赋list值时碰了不少壁,狠狠记下来。
- df.iloc()是根据index序号选择值,df.loc()是根据行列名选择值
- 为df某一单元格赋list值时用df.at(),set_value已经被淘汰了,同时at()也是根据行列名选中
- 根据条件筛选某些行列时是会带着行列的index值一起选走的,类似excel的筛选功能,选走这些行列不会自动生成新的索引值,所以这时如果用loc()或at()函数对新df操作时很可能会混乱。正确方法是筛选后用reset_index()方法重新生成新索引
还有其他一些杂七杂八的坑be like:
- 百度翻译的api标准版(免费的那个)一秒只能调用一次,我汉译英译汉每次译完还要time.sleep(1)一下😅
- jieba分词后再生成list有时会报莫名其妙的错误
seg_list = jieba.cut("他来到了网易杭研大厦") # 默认是精确模式 print(", ".join(seg_list)) print(type(seg_list)) pp = list(jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造")) # 搜索引擎模式 print(pp) print(type(pp)) print(type(pp[0]))
网上现成的代码跑起来结果是
他, 来到, 了, 网易, 杭研, 大厦 <class 'generator'> --------------------------------------------------------------------------- TypeError Traceback (most recent call last) Input In [124], in <cell line: 7>() 2 print(", ".join(seg_list)) 3 print(type(seg_list)) ----> 7 pp = list(seg_list) # 搜索引擎模式 8 print(pp) 9 print(type(pp)) TypeError: 'dict' object is not callabl
怎么都解决不了,结果换一个jupyter文件跑这段代码一点问题都没有😅只好杀掉现在这个kernal全部重新运行,好在后来也没报错。
-
还学到了一点,df数据存为csv文件,在读取时list可能会被读成str,应该用
df = pd.read_csv(df_name, converters={'column_name': eval}) #出自https://qastack.cn/programming/23111990/pandas-dataframe-stored-list-as-string-how-to-convert-back-to-list
-
就这样