我已经通过github API提取了数据,然后使用json.normalise将数据扁平化为 Dataframe 。不幸的是,一些数据仍然在列中的嵌套字典中。我可以从字典中提取值,但当单元格中有多个字典时,问题就出现了。
我如何操作 Dataframe ,使其调整大小,以考虑到额外的值。就像这样:
2hh7jdfx1#
为了重现你的问题,让我们假设我们有这样的 Dataframe :
import pandas as pd df = pd.DataFrame({'ID': [1, 2], 'Pull.Request.Files.Nodes': [[{'path':'example 1'}], [{'path':'example 2'}, {'path':'example 3'}]], })
df ID Pull.Request.Files.Nodes 0 1 [{'path': 'example 1'}] 1 2 [{'path': 'example 2'}, {'path': 'example 3'}]
我们可以分解列'Pull.Request.Files.Nodes'来从list中提取字典,然后我们可以应用一个lambda函数,如下所示:
'Pull.Request.Files.Nodes'
df = df.explode('Pull.Request.Files.Nodes', ignore_index=True) df['Pull.Request.Files.Nodes'] = df['Pull.Request.Files.Nodes'].apply(lambda r:r['path'])
import pandas as pd df = pd.DataFrame({'ID': [1, 2], 'Pull.Request.Files.Nodes': [[{'path':'example 1'}], [{'path':'example 2'}, {'path':'example 3'}]], }) df = df.explode('Pull.Request.Files.Nodes', ignore_index=True) df['Pull.Request.Files.Nodes'] = df['Pull.Request.Files.Nodes'].apply(lambda r:r['path']) # ID Pull.Request.Files.Nodes # 0 1 example 1 # 1 2 example 2 # 2 2 example 3
1条答案
按热度按时间2hh7jdfx1#
为了重现你的问题,让我们假设我们有这样的 Dataframe :
我们可以分解列
'Pull.Request.Files.Nodes'
来从list中提取字典,然后我们可以应用一个lambda函数,如下所示: