python - 如何将一行中的字典列表拆分为多行 Pandas DataFrame?
问题描述
我有以下数据框:
terms periods
0 [741880, 3764106] [{"name":"2010 год", "date":"31.12.2010", "value":"6621"},{"name":"2000 год", "date":"31.12.2000", "value":"17913"},{"name":"2006 год", "date":"31.12.2006", "value":"5849"},{"name":"2003 год", "date":"31.12.2003", "value":"9211"},{"name":"2012 год", "date":"31.12.2012", "value":"7647"},{"name":"2011 год", "date":"31.12.2011", "value":"8382"},{"name":"2014 год", "date":"31.12.2014", "value":"7388"},{"name":"2004 год", "date":"31.12.2004", "value":"8851"}]
如您所见,它在行中有一个字典列表。现在我想要类似的东西:
terms date value
0 [741880, 3764106] 31.12.2010 6621
1 [741880, 3764106] 31.12.2000 17913
2 [741880, 3764106] 31.12.2006 5849
etc
因此,字典列表必须根据列表中元素的数量分成几行。
我怎样才能做到这一点?
解决方案
尝试使用apply()
和explode()
:
df2 = (df['periods'].apply(lambda x: [[i['date'],i['value']] for i in x])
.explode()
.apply(pd.Series, index=['date','value'])])
df = pd.concat([df['terms'], df2, axis=1).reset_index(drop=True)
输出:
print(df)
terms date value
0 [741880, 3764106] 31.12.2010 6621
1 [741880, 3764106] 31.12.2000 17913
2 [741880, 3764106] 31.12.2006 5849
3 [741880, 3764106] 31.12.2003 9211
4 [741880, 3764106] 31.12.2012 7647
5 [741880, 3764106] 31.12.2011 8382
6 [741880, 3764106] 31.12.2014 7388
7 [741880, 3764106] 31.12.2004 8851
推荐阅读
- docker - 启动容器时出现随机 docker 错误
- javascript - 图表不反映活动条目,除非我在标记中将其设置为 array.slice() - 这将禁用选择点 - Stackblitz inside
- c# - Angular 客户端不反映 Azure Service Fabric 下的更改
- python - 使用 Python 显示 XML 数据
- javascript - 使用jsdoc注解,调用时如何指定泛型函数的输出类型
- java - 如何在 FirestorePagingAdapter 中获取文档 ID?
- uwp - 我可以在从具有完全信任功能的 UWP 应用程序启动 exe 时传递特定于 exe 的参数吗?
- javascript - 调用 CSS 设计会导致“预期的赋值或函数调用,而是看到一个表达式”
- geb - WebElement clear 函数在某些情况下不会清除输入值
- java - 无法调试 APK:“要设置断点进行调试,请附加 Java 源文件”