python字典dict和DataFrame、Series之间的相互转换

1.包含字典的嵌套字典,转DataFrame

import pandas as pd

pop = {'Nevada': {2001: 2.4, 2002: 2.9},
       'Ohio': {2000: 1.5, 2001: 1.7, 2002: 3.6}}
frame = pd.DataFrame(pop)
frame
Out[3]: 
      Nevada  Ohio
2001     2.4   1.7
2002     2.9   3.6
2000     NaN   1.5

在这里插入图片描述
类似于numpy的转置:

frame.T
Out[4]: 
        2001  2002  2000
Nevada   2.4   2.9   NaN
Ohio     1.7   3.6   1.5

1.2 构建dict,并转DataFrame

ans_weight = {'class1': 10.23, 'class3': 18.38}
difference = ans_weight['class3'] - ans_weight['class1']
ans_weight['total'] = difference
print(ans_weight)
{'class1': 10.23, 'class3': 18.38, 'total': 8.15}
ans_weight.items()
Out[15]: dict_items([('class1', 10.23), ('class3', 18.38), ('total', 8.149999999999999)])
list(ans_weight.items())
Out[16]: [('class1', 10.23), ('class3', 18.38), ('total', 8.149999999999999)]

转为DataFrame

# Convert the ans_weight dictionary to a pandas DataFrame
df_ans_weight = pd.DataFrame(list(ans_weight.items()), columns=['Class', 'Value'])

Out[17]: 
    Class  Value
0  class1  10.23
1  class3  18.38
2   total   8.15

2. 利用包含等长度列表或NumPy数组的 字典dict 来形成DataFrame

注意:等长度 的列表或数组

data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],
        'year': [2000, 2001, 2002, 2001, 2002, 2003],
        'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}
frame = pd.DataFrame(data)
frame
Out[8]: 
    state  year  pop
0    Ohio  2000  1.5
1    Ohio  2001  1.7
2    Ohio  2002  3.6
3  Nevada  2001  2.4
4  Nevada  2002  2.9
5  Nevada  2003  3.2

在这里插入图片描述
指定列的顺序

pd.DataFrame(data, columns=['year', 'state', 'pop'])
Out[9]: 
   year   state  pop
0  2000    Ohio  1.5
1  2001    Ohio  1.7
2  2002    Ohio  3.6
3  2001  Nevada  2.4
4  2002  Nevada  2.9
5  2003  Nevada  3.2

3. pd.Series 转为 dict

C = [6367, 18]
pd.Series(C).value_counts().to_dict()  # C 为list

输出结果:

{0: 6367, -1: 1103, 1: 18}

4.快速给dataframe重命名 columns = dict(zip(list1, list2))

df_10min = df_10min.rename(columns=dict(zip(df_10min.columns, wind_profile_clustering.height)))
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值