Python 如何将存储在dataframe单元格中的JSON对象的键值连接成每行一个字符串? 我的问题是:
如何将存储在dataframe单元格中的JSON对象的键值连接成每行一个字符串?对不起,我觉得我的问题很简单,但我找不到一个好的表达方式 我的背景是: 假设我有一个熊猫数据框df,它包含一个名为“参与者”的列。单元格值是JSON对象,例如:Python 如何将存储在dataframe单元格中的JSON对象的键值连接成每行一个字符串? 我的问题是:,python,json,pandas,dataframe,Python,Json,Pandas,Dataframe,如何将存储在dataframe单元格中的JSON对象的键值连接成每行一个字符串?对不起,我觉得我的问题很简单,但我找不到一个好的表达方式 我的背景是: 假设我有一个熊猫数据框df,它包含一个名为“参与者”的列。单元格值是JSON对象,例如: df['participants'][0] == df.participants[0] == [{'participantId': 1, 'championId': 7 }, {'participantId': 2, 'championId':
df['participants'][0] == df.participants[0] ==
[{'participantId': 1,
'championId': 7 },
{'participantId': 2,
'championId': 350 },
{'participantId': 3,
'championId': 266 },
{'participantId': 4,
'championId': 517 },
{'participantId': 5,
'championId': 110, },
...
...
{'participantId': 10,
'championId': 10 }]
df.参与者[1]
将包含完全不同的信息,具有相同的结构。如果有人感兴趣的话,这是传奇联盟RiotWatcher python API为每场比赛提供的数据的一部分
我的目标是,对于每一个participantId
,将其连接到df中每一行的一个字符串中,这样我们就有了一个新的列“x”,它包含每一行的字符串'7350266517110'
,具体取决于参与者列中的内容
我的工作解决方案是:
(旁注:我避免使用列表,因为我已经读到列表没有在pandas中矢量化,这意味着它们速度较慢。这就是为什么我在这里使用字符串。)
然而,由于我的数据大约有10万行长,这似乎不是最快的解决方案,特别是因为我认为嵌套for循环速度较慢,对吗
有可能像这样做吗
df['x']=[str(df_d1['participants'][key][value]。获取('championId')作为key,df['participants']中的值]
我认为使用单个for循环的一种方法是利用json库,如:
for i in range(0, 20):
x = str(pd.json_normalize(df_d1.participants[i])['championId'].values)
df['x'] = x
有人遇到过类似的事情吗?你找到了解决这个问题的无痛方法吗?我的解决方案需要一些时间
谢谢!In[16]:df['x']=df['participants'].map(lambda x:','.join(str(i['participanti'])表示i In x))
…:打印(df['participants'][0])
…:打印(df['x'][0])
...:
[{'ParticipanId':1,'championId':7},{'ParticipanId':2,'championId':350},{'ParticipanId':3,'championId':266}]
1, 2, 3
for i in range(0, 20):
x = str(pd.json_normalize(df_d1.participants[i])['championId'].values)
df['x'] = x