将熊猫列转换为JSON字符串

时间:2020-07-02 08:56:24

标签: python json pandas dataframe

我有一个带有col1,col2和col3列以及各自值的熊猫数据框。我需要将列名和值转换为JSON字符串。

例如,如果数据集是

data= pd.DataFrame({'col1': ['bravo', 'charlie','price'], 'col2': [1, 2, 3],'col3':['alpha','beta','gamma']})

我需要获得这样的输出

newdata= pd.DataFrame({'index': [0,1,2], 'payload': ['{"col1":"bravo", "col2":"1", "col3":"alpha"}', '{"col1":"charlie", "col2":"2", "col3":"beta"}', '{"col1":"price", "col2":"3", "col3":"gamma"}']})

I didn't find any function or iterative tool to perform this.

Thank you in advance!

5 个答案:

答案 0 :(得分:2)

您在这里:

import pandas as pd

data= pd.DataFrame({'col1': ['bravo', 'charlie','price'], 'col2': [1, 2, 3],'col3':['alpha','beta','gamma']})
new_data = pd.DataFrame({
    'payload': data.to_dict(orient='records')
})
print(new_data)

## -- End pasted text --
                                          payload
0   {'col1': 'bravo', 'col2': 1, 'col3': 'alpha'}
1  {'col1': 'charlie', 'col2': 2, 'col3': 'beta'}
2   {'col1': 'price', 'col2': 3, 'col3': 'gamma'}

答案 1 :(得分:2)

您可以使用:

{'index': [0, 1, 2],
 'payload': [{'col1': 'bravo', 'col2': 1, 'col3': 'alpha'},
             {'col1': 'charlie', 'col2': 2, 'col3': 'beta'},
             {'col1': 'price', 'col2': 3, 'col3': 'gamma'}]}

结果:

df = data.agg(lambda s: dict(zip(s.index, s)), axis=1).rename('payload').to_frame()

答案 2 :(得分:1)

这是使用12;342;15的一种方法。

例如:

.to_dict('index')

输出:

import pandas as pd

data= pd.DataFrame({'col1': ['bravo', 'charlie','price'], 'col2': [1, 2, 3],'col3':['alpha','beta','gamma']})
newdata = data.to_dict('index')
print({'index': list(newdata.keys()), 'payload': list(newdata.values())})
#OR -->newdata= pd.DataFrame({'index': list(newdata.keys()), 'payload': list(newdata.values())})

答案 3 :(得分:1)

如果我的理解是正确的,则希望将索引和数据记录作为字典。

所以:

dict(index=list(data.index), payload=data.to_dict(orient='records'))

对于您的示例数据:

>>> import pprint
>>> pprint.pprint(dict(index=list(data.index), payload=data.to_dict(orient='records')))
{'index': [0, 1, 2],
 'payload': [{'col1': 'bravo', 'col2': 1, 'col3': 'alpha'},
             {'col1': 'charlie', 'col2': 2, 'col3': 'beta'},
             {'col1': 'price', 'col2': 3, 'col3': 'gamma'}]}

答案 4 :(得分:0)

使用public boolean isInternetAvailable() { try { InetAddress ipAddr = InetAddress.getByName("google.com"); return !ipAddr.equals(""); } catch (Exception e) { return false; } } to_dict

newdata = data.T.to_dict()