簡體   English   中英

to_dict()在值周圍創建括號

[英]to_dict() creates brackets around values

我試圖從我的pandas DataFrame創建默認字典,但是to_dict()方法在我要編寫的列的值周圍創建了不需要的方括號。 示例代碼如下:

# Create DF
my_df = pd.DataFrame({'numbers': (1, 2, 3, 4, 5), 'letters': ('a', 'b', 'c', 'd', 'e')})

# Create dictionary from the DF
my_dict = my_df.set_index('numbers').T.to_dict('list')

# Create collections dictionary
my_collections_dict = collections.defaultdict(int, my_dict)

結果是:

defaultdict(int, {1: ['a'], 2: ['b'], 3: ['c'], 4: ['d'], 5: ['e']})

我想要的是:

defaultdict(int, {1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'})

如何獲得“純”列值?

您不需要轉置框架,而是可以選擇列並執行以下操作:

my_dict = my_df.set_index('numbers')['letters'].to_dict()

如果您要在字典中使用多列,則需要多花一行,但是您可以使用:

my_dict = my_df.set_index('numbers').to_dict(orient='index')
my_dict = {k: list(v.values()) for k, v in my_dict.items()}

這是因為您指定to_dict('list') ->這樣,條目將以列表形式返回(這就是為什么它們在[]中顯示的原因[]

嘗試改用records

# Create DF
my_df = pd.DataFrame({'numbers': (1, 2, 3, 4, 5), 'letters': ('a', 'b', 'c', 'd', 'e')})

# Create dictionary from the DF
my_dict = my_df.set_index('numbers').T.to_dict('records')

# Create collections dictionary
my_collections_dict = collections.defaultdict(int, my_dict)

第二行的輸出:

[{1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'}]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM