繁体   English   中英

如何在pandas dataframe中创建json列

[英]How to create json column in pandas dataframe

我有一个DF

index col1
0      a,c
1      d,f
2      o,k

我需要这样的 df

index col1
0     {"col1":"a,c"}
1     {"col1":"d,f"}
2     {"col1":"o,k"}

这需要应用于 df 中的所有列。

尝试了东方,但没有达到预期。

对于所有列使用 double apply ,列名由x.name传递,获取字典:

df = df.apply(lambda x: x.apply(lambda y: {x.name: y}))

对于json使用:

import json

df = df.apply(lambda x: x.apply(lambda y: json.dumps({x.name: y})))
print (df)
              col1
0  {"col1": "a,c"}
1  {"col1": "d,f"}
2  {"col1": "o,k"}

字典的替代解决方案:

df = pd.DataFrame({c: [{c: x} for x in df[c]] for c in df.columns}, index=df.index)

json 的 Alterative2 解决方案(如果所有列都由字符串填充,则效果很好):

df = '{"' + df.columns + '": "' + df.astype(str) + '"}'
如果您想要与显示的字符串完全相同,请使用:
df['col1'] = '{col1:'+df['col1']+'}'

# or 
c = 'col1'
df[c] = f'{{{c}:'+df[c]+'}'

output:

0    {col1:a,c}
1    {col1:d,f}
2    {col1:o,k}
Name: col1, dtype: object

或者,用引号:

df['col1'] = '{"col1":"'+df['col1']+'"}'

# or 
c = 'col1'
df[c] = f'{{"{c}":"'+df[c]+'"}'

output:

   index            col1
0      0  {"col1":"a,c"}
1      1  {"col1":"d,f"}
2      2  {"col1":"o,k"}
对于所有列:
df = df.apply(lambda c: f'{{"{c.name}":"'+c.astype(str)+'"}')

注意。 确保“索引”是索引

对于字典:
df['col1'] = [{'col1': x} for x in df['col1']]

output:

   index             col1
0      0  {'col1': 'a,c'}
1      1  {'col1': 'd,f'}
2      2  {'col1': 'o,k'}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM