输入数据:
data = [
['0039384', [{'A': 415}, {'A': 228}, {'B': 360}, {'B': 198}, {'C': 300}, {'C': 165}]],
['0035584', [{'A': 345}, {'A': 117}, {'B': 223}, {'B': 554}, {'C': 443}, {'C': 143}]]
]
df = pd.DataFrame(data=data, columns=['id', 'prices'])
我想得到这样的结果:
id CurrentPrice_A LastPrice_C CurrentPrice_B LastPrice_B CurrentPrice_C LastPrice_C
0039384 415 228 360 198 300 165
我已经尝试过分开dict,然后每列替换和重命名比得到的价格,但它需要大约10行代码。你知道任何短期和快速的方法来做到这一点。
2条答案
按热度按时间y1aodyip1#
迭代 Dataframe 的每一行是很方便的,这样你就可以控制算法,两个两个地压缩字典(以便合并当前的和最后的),并动态地分配列名和它们的值。
为了方便起见,您可以使用列表和临时字典,而不是使用pd.concat()。
输出将为:
knpiaxh12#
首先将列表行转换为新列:
然后,我们将这些列分成奇数和偶数,奇数代表最后一个价格,偶数代表当前价格:
现在,重命名列:
最后,从dict中获取值: