首页 > 解决方案 > 创建df列作为行的json

问题描述

我有下面的代码,它遍历 df 并创建一个带有其他列new的 dict 的附加列。有没有更好的方法来实现这一点而不使用 iterrows?我的实际数据集要大得多,并且遍历行并不高效。

代码

import pandas as pd
import json

data = {'Name':['Tom', 'Nick', 'Jim', 'John'],
        'Age':[20, 21, 35, 11]}
 
df = pd.DataFrame(data)

for i, row in df.iterrows():
    df.loc[i, 'new'] = json.dumps(row.to_dict())

print(df)

输出

  Name  Age                          new
0   Tom   20   {"Name": "Tom", "Age": 20}
1  Nick   21  {"Name": "Nick", "Age": 21}
2   Jim   35   {"Name": "Jim", "Age": 35}
3  John   11  {"Name": "John", "Age": 11}

标签: pythonjsonpython-3.xpandasdataframe

解决方案


你可以df.to_dict试试df.join

out = df.join(pd.Series(df.to_dict('records'),index=df.index,name='new'))

print(out)

   Name  Age                          new
0   Tom   20   {'Name': 'Tom', 'Age': 20}
1  Nick   21  {'Name': 'Nick', 'Age': 21}
2   Jim   35   {'Name': 'Jim', 'Age': 35}
3  John   11  {'Name': 'John', 'Age': 11}

推荐阅读