1 回答

TA贡献1824条经验 获得超5个赞
我假设您拥有“android”来源,但我不清楚您的数据是什么样子以及“id”和来源之间的关系是什么。话虽如此,但在准备数据时存在一个错误。您正在删除所有重复项。
例如:
>>> import pandas as pd
>>> df = pd.DataFrame(data={'col1':[1,2,2],'col2':[3,4,3],'col3':[1,4,1]})
>>> df
col1 col2 col3
0 1 3 1
1 2 4 4
2 2 3 1
>>> df.drop_duplicates('col1',keep=False)
col1 col2 col3
0 1 3 1
在上面的代码中,如果您使用“keep=False”,您可以看到它正在删除所有重复的行。
>>> df.drop_duplicates('col1',keep='first')
col1 col2 col3
0 1 3 1
1 2 4 4
相反,使用keep='first'或keep='last'并查看是否有任何改进。此外,如果我能对数据有更多的了解,找出哪里出错了,那就太好了。
编辑
一段时间后,我将您的 JSON 对象保存到“me.json”文件中,格式如下:
[{},{}]
其中第一个对象的来源是 iPhone,第二个对象的来源是 android。我使用您的代码加载数据:
Python 2.7.15rc1 (default, Nov 12 2018, 14:31:15)
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pandas as pd
>>> import json
>>> with open('me.json','rb') as file:
... json_list = json.load(file)
...
>>> len(json_list)
2
>>> df = pd.DataFrame(json_list)
>>> df1 = df[['id','source']]
>>> df1['source'].value_counts()
<a href="linktwitter.com/download/Android" rel="nofollow">Twitter for Android</a> 1
<a href="linktwitter.com/download/iphone" rel="nofollow">Twitter for iPhone</a> 1
Name: source, dtype: int64
在上面的输出中,您可以看到我能够看到“Android”。我的结论是,在您的数据中,df['source'] 列中可能根本没有“Android”。
请仔细查看,因为每个 JSON 对象中有两个“源”键,一个键在“quoted_status”内。您可能已经在此密钥中看到了“Android”。
添加回答
举报