python - Pandas Dataframe 在行和列中增长
问题描述
我有以下数据框(可能在行和信息列中增长):
City Country Info1 Info2
BCN Spain 3 5.6
Moscow Russia 4 7
我正在尝试将信息拆分如下:
[
{Info1: 3,
City: BCN,
Country: Spain},
{Info2: 5.6,
City: BCN,
Country: Spain},
{Info1: 4,
City: Moscow,
Country: Russia},
{Info2: 7,
City: Moscow,
Country: Russia}
]
这有效:
import pandas as pd
dict = {'city':["BCN", "Moscow"],
'country': ["Spain", "Russia"],
'inf_1':[3, 5],
'inf_2':[4,7]}
#we make the dict a dataframe
df = pd.DataFrame(dict)
# We make a list of the indicators
columns = list(df)[2:]
j=0
i=0
for rows in df.itertuples():
for col in columns:
print(" ")
print("city: " + str(rows.city) )
print("country: " + str(rows.country))
print("ind_id: "+ str(columns[j]))
print("value: "+ str(df[col][i]))
print(" ")
j=j+1
j=0
i=i+1
然而,这个结果对我来说似乎并不美好。由于我对 Pandas 很陌生,有没有办法让更优雅的代码得到相同的结果?
解决方案
如果您对输出中的小调整没问题,您可以使用melt
andto_dict
直接为每个信息获取单独的字典:
>>> df.melt(['City', 'Country']).to_dict('r')
[{'City': 'BCN', 'Country': 'Spain', 'value': 3.0, 'variable': 'Info1'},
{'City': 'Moscow', 'Country': 'Russia', 'value': 4.0, 'variable': 'Info1'},
{'City': 'BCN', 'Country': 'Spain', 'value': 5.6, 'variable': 'Info2'},
{'City': 'Moscow', 'Country': 'Russia', 'value': 7.0, 'variable': 'Info2'}]
推荐阅读
- android - Android SDK版本迁移UI问题
- javascript - 有没有人如何在 Angular 中使用 HTML、CSS 和 JavaScript 制作四列动态表格
- javascript - 尝试为我想要的聚合解析二维 JSON 数组
- python - GCP 使用 Python 获取自定义 IAM 角色权限
- python - 有人可以帮我解决 Flask 的这个问题吗
- amazon-web-services - 搜索根据注释过滤的 AWS X-ray
- virtual-machine - 我尝试在 VirtualBox 中安装 Arista vEOS,但出现此错误:“未找到启动配置”
- java - 推土机:成功转换后用源值覆盖的字段
- sql - 获取具有最大值的行的最有效方法是什么?
- python - UDP 客户端/服务器类型错误