Python Dataframe不显示来自Android的twitter源

Python Dataframe不显示来自Android的twitter源,python,json,pandas,tweepy,Python,Json,Pandas,Tweepy,我正试图对一个twitter帐户进行一些分析,但我在显示来自Android的源代码时遇到了麻烦。我所做的是合并了两个json文件,我想我正确地合并了它,但万一我弄错了,这里是我使用的代码 old_tweets = load_tweets("real_tweets/real_old_tweets.json") print(len(old_tweets)) for aLis1 in old_tweets: if aLis1 not in tweets: tweets.ap

我正试图对一个twitter帐户进行一些分析,但我在显示来自Android的源代码时遇到了麻烦。我所做的是合并了两个json文件,我想我正确地合并了它,但万一我弄错了,这里是我使用的代码

old_tweets = load_tweets("real_tweets/real_old_tweets.json")
print(len(old_tweets))  
for aLis1 in old_tweets:
    if aLis1 not in tweets:
        tweets.append(aLis1)
load_tweets是一个自定义函数,只需打开并加载给定特定路径的json文件

在合并tweets的两个json文件之后,我调用了这个函数来创建数据帧并清理它,以便只显示我想要的信息

df_tweets1 = pd.DataFrame(tweets)
df_tweets2 = df_tweets1[['id','created_at','source','full_text','retweet_count']]
df_tweets = df_tweets2.drop_duplicates('id', keep=False
df_tweets.set_index('id', inplace=True)
df_tweets = df_tweets.rename(columns={"created_at": "time", "full_text": "text"})
df_tweets["time"] = pd.to_datetime(df_tweets["time"])
问题是,当我调用df_tweets[source].unique时,我没有看到任何来自android的tweets

array(['<a href="http://twitter.com/download/iphone" rel="nofollow">Twitter for iPhone</a>',
   '<a href="http://twitter.com/#!/download/ipad" rel="nofollow">Twitter for iPad</a>',
   '<a href="https://studio.twitter.com" rel="nofollow">Twitter Media Studio</a>',
   '<a href="https://studio.twitter.com" rel="nofollow">Media Studio</a>',
   '<a href="http://twitter.com" rel="nofollow">Twitter Web Client</a>'],
  dtype=object)
在合并两组Twitter数据时,我是否做错了什么?还是我在尝试创建数据帧时做错了什么

编辑**这里是real_old_tweets.json的一个示例输出,以了解格式。我只想发布一条,因为一条推文中包含了很多信息

[{'created_at': 'Tue Oct 16 16:22:11 +0000 2018',
  'id': 1052233253040640001,
  'id_str': '1052233253040640001',
  'full_text': 'REGISTER TO https://url/0pWiwCHGbh! #MAGAI am assuming that you are having "android" sources and I don't have a clear idea of how your data looks like and what is the relation between the "id" and source. Having said that, there is a bug when you are preparing your data. You are dropping all the duplicates. 

For example:

>>> 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
[{'created_at':'2018年10月16日星期二16:22:11+0000', “id”:1052233253040640001, “id_街”:“1052233253040640001”,
“全文”:“注册到”https://url/0pWiwCHGbh!MAGA我假设您有android源代码,我不清楚您的数据是什么样子的,id和源代码之间的关系是什么。尽管如此,您在准备数据时出现了一个错误。您正在删除所有重复的数据

例如:

>>> df.drop_duplicates('col1',keep='first')
   col1  col2  col3
0     1     3     1
1     2     4     4

在上面的代码中,如果使用keep=False,您可以看到它正在删除所有重复的行

[{},{}]
相反,使用keep='first'或keep='last'查看是否有任何改进。此外,如果我能对数据有更多的了解,找出哪里出了问题,那就太好了

编辑

一段时间后,我获取了您的JSON对象并以以下格式保存到me.JSON文件中:

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

其中第一个对象的源是iPhone,第二个对象的源是android。我使用您的代码加载数据:

在上面的输出中,您可以看到我可以看到Android。我的结论是,在您的数据中,在df['source']列中可能根本没有Android


请仔细查看,因为每个JSON对象中有两个源键,一个键位于quoted_状态中。您可能在该键中看到了Android。

您可以包含来自real_tweets/real_old_tweets.jsonSilly问题的示例,但您确定原始文件中有显示Android的源吗?您可以吗u发布每个源的一个或两个示例?@G.Anderson我手动检查了合并的文件,并在其中创建了一个ctrl-f Android实例there@wpercy我刚刚编辑了我的帖子,以显示一条推文的格式。我刚刚编辑了一条我以前的推文。json@onbu您是否尝试获取df_tweets2['source'].unique?你能看到那边的android吗?请告诉我。这给了我和df_推文相同的结果[来源].unique.我没有看到androidSo只是出于好奇,我刚打印了推特上的信息,我发现源代码是Android。那么这可能是我合并两个json文件的问题吗?你说合并时是指追加吗?因为追加应该不是个问题,我在想是否正确读取了文件,什么你可以做的是添加两个伪JSON对象是一个单独的文件,并尝试在文件中读取,如果你仍然没有看到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