Python dataframe到json,其方向索引和索引等于行值

Python dataframe到json,其方向索引和索引等于行值,python,json,pandas,Python,Json,Pandas,我有一个pandas数据框,我正在尝试将其转换为特定的json格式: df = pd.DataFrame([['A',1,2,3],['B',2,3,4],['C','C',1,6],['D','D',9,7]], columns=['W','X','Y','Z']) df.set_index('W', inplace=True, drop=True, append=False) df X Y Z W A 1 2 3 B 2 3 4 C C 1 6 D D 9

我有一个pandas数据框,我正在尝试将其转换为特定的json格式:

df = pd.DataFrame([['A',1,2,3],['B',2,3,4],['C','C',1,6],['D','D',9,7]], columns=['W','X','Y','Z'])

df.set_index('W', inplace=True, drop=True, append=False)

df
   X  Y  Z
W
A  1  2  3
B  2  3  4
C  C  1  6
D  D  9  7
我希望得到一个json输出,如下所示:

output_json = {'A': {'X':1,'Y':2,'Z':3}, 'B': {'X':2,'Y':3,'Z':4}, 'C':{'Y':1,'Z':6}, 'D': {'Y':9,'Z':7} }
这是我尝试过的,但我无法获得“C”和“D”键所需的结果:

df.to_json(orient='index')
'{"A":{"X":1,"Y":2,"Z":3},"B":{"X":2,"Y":3,"Z":4},"C":{"X":"C","Y":1,"Z":6},"D":{"X":"D","Y":9,"Z":7}}'
如何解决这个问题?也许这是我所缺少的直截了当的东西。谢谢。

您可以先转换,然后使用嵌套dict comprehension仅过滤
int
值,最后用于json:


很高兴你能帮忙!祝你好运
import json

d = df.to_dict(orient='index')
j = json.dumps({k:{x:y for x,y in v.items() if isinstance(y, int)} for k, v in d.items()})
print (j)
{"A": {"X": 1, "Y": 2, "Z": 3}, 
 "C": {"Y": 1, "Z": 6},
 "D": {"Y": 9, "Z": 7},
 "B": {"X": 2, "Y": 3, "Z": 4}}