我有以下杰森:
{'ADA': {'free': '0.00000000', 'locked': '1.32580000'},
'ADX': {'free': '15.0000000', 'locked': '0.00000000'},
'AE': {'free': '0.23000000', 'locked': '1.253000000'},
'ZRX': {'free': '0.00000000', 'locked': '0.00000000'}}
我正在尝试将上述Jason转换为熊猫,但是仅在不需要时仅在“免费”或“锁定” +不包含“ 0”的情况下将行数>> 0的行,因此关于上述示例的ZRX将不会所示,而1.2530000将仅为1.253
我想要的熊猫是:
free locked
ADA 0 1.3258
ADX 15 0
AE 0.23 1.253
感谢您的帮助!
答案 0 :(得分:3)
我相信您首先需要DataFrame.from_dict
,然后再转换为浮点数,并用Series.ne
用boolean indexing
过滤,最后是不带尾随0
的字符串,请使用this solution:< / p>
d = {'ADA': {'free': '0.00000000', 'locked': '1.32580000'},
'ADX': {'free': '15.0000000', 'locked': '0.00000000'},
'AE': {'free': '0.23000000', 'locked': '1.253000000'},
'ZRX': {'free': '0.00000000', 'locked': '0.00000000'}}
df = pd.DataFrame.from_dict(d,orient='index')
df = df.astype(float)
df = df[df['free'].ne(0) | df['locked'].ne(0)].applymap('{0:g}'.format)
#if need remove 0 from all rows
#df = df[df.ne(0).any(axis=1)].applymap('{0:g}'.format)
print (df)
free locked
ADA 0 1.3258
ADX 15 0
AE 0.23 1.253
答案 1 :(得分:2)
您可以使用:
json = {'ADA': {'free': '0.00000000', 'locked': '1.32580000'},
'ADX': {'free': '15.0000000', 'locked': '0.00000000'},
'AE': {'free': '0.23000000', 'locked': '1.253000000'},
'ZRX': {'free': '0.00000000', 'locked': '0.00000000'}}
df = pd.DataFrame.from_dict(json).astype(float).transpose()
df = df.applymap(lambda s: str(s).rstrip('0').rstrip('.') if '.' in str(s) else s)
df = df[~((df['free']=='0') & (df['locked']=='0'))] # This is to drop row containing all zeros
print(df)
free locked
ADA 0 1.3258
ADX 15 0
AE 0.23 1.253