Python 基于列中的唯一值从DataFrame列创建字典

Python 基于列中的唯一值从DataFrame列创建字典,python,pandas,numpy,dictionary,dataframe,Python,Pandas,Numpy,Dictionary,Dataframe,我有一个头痛的问题,我不确定能否用一两行代码来解决,我正在尝试。我可以在没有数据帧的情况下或多或少地完成它(例如,如果数据是simple.txt),但我想看看是否可以用pandas完成 下面是df.head(10),我想创建一个字典,其中键是解析后的唯一一周中的一天数字(1-7,星期日-星期六)而值是出生的和,发生在每周的每个日值 year month date_of_month day_of_week births 0 1994 1 1

我有一个头痛的问题,我不确定能否用一两行代码来解决,我正在尝试。我可以在没有数据帧的情况下或多或少地完成它(例如,如果数据是simple.txt),但我想看看是否可以用pandas完成

下面是
df.head(10)
,我想创建一个字典,其中键是解析后的唯一
一周中的一天
数字(1-7,星期日-星期六)而
出生
,发生在每周的每个

    year    month   date_of_month   day_of_week births
  0 1994      1          1              6        8096
  1 1994      1          2              7        7772
  2 1994      1          3              1        10142
  3 1994      1          4              2        11248
  4 1994      1          5              3        11053
  5 1994      1          6              4        11406
  6 1994      1          7              5        11251
  7 1994      1          8              6        8653
  8 1994      1          9              7        7910
  9 1994      1          10             1        10498
我可以使用以下工具轻松创建每周各<代码>天值的总和:

df.groupby[df['day_of_week'] == 1, 'births'].sum()
它将每周的
天==1发生的所有分娩相加。我可以创建一个包含
day\u of_week
值的字典,其中包含:

d = {i : 0 for i in df['day_of_week']}
这是一本字典,
d

{1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0}
但我无法将两者连接起来,以便分析每周的
数字,将这些数字分配到字典的,然后对每周的每个
天发生的
出生
进行求和,然后将这些求和值分配到各自的键

如果有人有建议的话!我在下面创建了一个复制条件的虚拟数据框(如果有帮助的话),因为
day\u of\u week
值确实会在我的数据框中重复(尽管您无法从
df.head()
中分辨)


这一点可以用熊猫一句话来回答。只需使用groupby构造对解析的星期几进行分组,然后对出生数求和。Pandas内置了将其转化为字典的功能,其中键是一周中的一天,值是总和:

import pandas as pd
day_of_week = [6, 7, 1, 2, 3, 4, 5, 6, 7, 1]
births = [8096, 7772, 10142, 11248, 11053, 11406, 11251, 8653, 7910, 10498]

df = pd.DataFrame({'day_of_week': day_of_week,
               'births': births})

df.groupby('day_of_week')['births'].sum().to_dict()
# output: {1: 20640, 2: 11248, 3: 11053, 4: 11406, 5: 11251, 6: 16749, 7: 15682}
看来你需要

df_dummy.set_index('day_of_week').births.sum(level=0).to_dict()
Out[30]: {1: 45121, 2: 324, 3: 3498, 4: 84804, 5: 34885, 6: 30827, 7: 8923}

抱歉,我的意思是写:
df.groupby('day_of u week')['birtions'].sum()[1]
,用于对发生在
day of u week
==1@RichardSyw:-)快乐编码
df_dummy.set_index('day_of_week').births.sum(level=0).to_dict()
Out[30]: {1: 45121, 2: 324, 3: 3498, 4: 84804, 5: 34885, 6: 30827, 7: 8923}