![](/img/trans.png)
[英]How to create new pandas dataframe column from file that contains 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.