[英]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.