pandas的DataFrame與python的dict字典之間的相互轉換


一、dict生成DataFrame

 1、如果只有一個dict,即一行dataframe數據

# 注:dict的形式必須是如下2種,不然會報錯

# 1、dict外面加一層list【】
dict_a = [{'a': 0, 'b': 1, 'c': 2}] 


# 2、dict內部的數據至少有1個或多個是list形式
# 注:此時dict外面如果加上list,即[{}]形式,生成的df,有[]的數據是list形式
dict_a = {'a': [0], 'b': 1, 'c': 2}  # 任意一個list
dict_a = {'a': [0], 'b': [1], 'c': 2}  # 任意多個list
dict_a = {'a': [0], 'b': [1], 'c': [2]}


pd.DataFrame(dict_a)
>>
輸出:

 2、多行dataframe

# 多行有以下3種形式:

# list里面套多個dict,一個dict是一行數據。
# 注:dict里面的數據如果是list( 'a': [0]形式),生成的df數據也是list形式
dict_b = [{'a': 0, 'b': 1, 'c': 2}, {'a': 3, 'b': 4, 'c': 5}, {'a': 6, 'b': 7, 'c': 8}]


# dict形式,數據是list形式。
# 注:如果是一行數據,需要是list形式,不然會報錯
dict_b = {'a': [0, 3, 6], 'b': [1, 4, 7], 'c': [2, 5, 8]}


# 這種情況針對有一列數據一樣的情況:
dict_b = {'a': 1, 'b': [1, 4, 7], 'c': [2, 5, 8]}  # a列全為1,可以簡寫

>>
輸出:

 二、pandas轉換為dict

使用方法df.to_dict()

參數:'dict' (默認) ,'list','series','split','records','index'

# 拿上面的數據舉例,df_b
     a    b    c
0    0    1    2
1    3    4    5
2    6    7    8


# 1、不傳入參數,默認是'dict'
df_b.to_dict()  # 列標題作為外層dict鍵值,索引作為內層dict鍵值
>> 
{'a': {0: 0, 1: 3, 2: 6}, 'b': {0: 1, 1: 4, 2: 7}, 'c': {0: 2, 1: 5, 2: 8}}


# 2、'list'
df_b.to_dict('list')  # 列標題是外層鍵值,內層是list
>>
{'a': [0, 3, 6], 'b': [1, 4, 7], 'c': [2, 5, 8]}

# 3、'split'
df_b.to_dict('split')  # 將列標題,索引,數據分開
>>
{'index': [0, 1, 2],
 'columns': ['a', 'b', 'c'],
 'data': [[0, 1, 2], [3, 4, 5], [6, 7, 8]]}


# 4、'records'
df_b.to_dict('records')  # 外層列表,內層是列標題為鍵值的列表
>>
[{'a': 0, 'b': 1, 'c': 2}, {'a': 3, 'b': 4, 'c': 5}, {'a': 6, 'b': 7, 'c': 8}]


# 5、'index'
df_b.to_dict('index')  # 與參數1相反:索引作為外層dict鍵值,列標題作為內層dict鍵值
>>
{0: {'a': 0, 'b': 1, 'c': 2}, 1: {'a': 3, 'b': 4, 'c': 5}, 2: {'a': 6, 'b': 7, 'c': 8}}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM