在用pandas读取dict和list的时候,依据结构和需求不同,我们可能需要生成不同格式的DataFrame,这里我总结了下我最近遇到的一些读取操作
1.读取dict
这里我们以一个字典为数据,看下不同操作的结果有何不同
data = {'a':[1,2],'b':[2,3]}
(1)直接调用DataFrame进行读取的话,生成的DataFrame结构如下:
pd.DataFrame(data)
或者
pd.DataFrame.from_dict(data)
需要说明的是:from_dict这个方法只有在pandas 0.23版本后才有,如果在早期的版本如0.19中调用会出现报错
(2)如果我们想以a,b作为索引,以list中的每个值分别为一列怎么操作呢?
pd.DataFrame.from_dict(data,orient='index',columns = ['value1','value2'])
如果进一步想让a、b生成列的话,调用reset_index方法即可
pd.DataFrame.from_dict(data,orient='index',columns = ['value1','value2']).reset_index().rename(columns = {'index':'key'})
(3)但是如果我们想把字典的key和value分别生成两列,如何操作呢?
一种方法是:
pd.DataFrame(list(data.items()),columns = ['key','value'])
还有一种方法依然是利用from_dict,不过就需要将value中的list提前转化成字符串,然后再进行操作即可
2.读取list
(1)一般读取一个list,生成的结果如下
pd.DataFrame([1,2,3,4])
(2)如果读取的list中的每个元素都是一个元组,会发生什么呢?
pd.DataFrame([(1,2,3,4),(2,3,4,5)],columns = ['value1','value2','value3','value4'])
如果忽略columns的话,第二个list的值不是列名,而是默认生成索引名,如下:
pd.DataFrame([(1,2,3,4),(2,3,4,5)],['value1','value2'])
以上是最近遇到的一些常用的pandas操作,后面遇到了其他的情况继续完善。