我有一些来自webscraping twitter的json数据,在notepad++中打开json显示了以下示例键值对:
"id_str": "823962574509248514",
但是在阅读了json之后(我有两种方法):
filename = "../TheTweets/data/short.json"
columnName = ['id_str','created_at', 'full_text','in_reply_to_status_id']
data = pd.read_json(filename, orient=columnName)
#data = pd.DataFrame(pd.read_json(filename, orient=columnName,encoding="utf-8"),columns=columnName)
我注意到身份证号码变了:
"id_str":823962574509248512, (looks like the last number)
在运行print(data.dtypes)之后,我看到id\u str是int64
我不太明白发生了什么,如果id不再匹配,这似乎是一个很大的问题(我继续将数据保存回一个新的json,并在notepad++中进行比较)。如果我有几千行的话,我不太清楚这会有什么影响
这似乎是一个bug(不要引用我的话),因为
pd.read_json
隐式地将字符串转换为整数,这是不应该发生的。您可以尝试强制执行dtype
并防止发生转换这就是目前发生在你身上的事情:
现在,将一个
dtype
参数传递给read_json
并查看区别:如果要强制多个列,请向
dtype
字典添加更多的键值。如果你想把所有的东西都当作一个字符串,dtype=str
就可以了嗯,这很有希望。考虑到您的示例数据,
json_normalize
似乎是这里的方法请注意,
id_str
也可以工作。在您的例子中,您需要调用文件上的json.load
,并将传递给函数相关问题 更多 >
编程相关推荐