Python 将熊猫与婴儿车一起使用
我在学习如何使用API,我想我应该做一个Reddit机器人。我正在尝试应用一些用于不同脚本的代码。该脚本使用请求将请求转换为json,然后将其添加到数据帧,然后编写csv。我也试着这么做,但不知道如何将Reddit数据运行到数据帧中。我在下面尝试的方法会出现错误Python 将熊猫与婴儿车一起使用,python,pandas,Python,Pandas,我在学习如何使用API,我想我应该做一个Reddit机器人。我正在尝试应用一些用于不同脚本的代码。该脚本使用请求将请求转换为json,然后将其添加到数据帧,然后编写csv。我也试着这么做,但不知道如何将Reddit数据运行到数据帧中。我在下面尝试的方法会出现错误 #!/usr/bin/python import praw import pandas as pd reddit = praw.Reddit('my_bot') subreddit = reddit.subreddit("
#!/usr/bin/python
import praw
import pandas as pd
reddit = praw.Reddit('my_bot')
subreddit = reddit.subreddit("askreddit")
for submission in subreddit.hot(limit=5):
print("Title: ", submission.title)
print("Score: ", submission.score)
print("Link: ", submission.url)
print("---------------------------------\n")
csv_file = f"/home/robothead/scripts/python/reddit/reddit-data.csv"
# start with empty dataframe
df = pd.DataFrame()
#j_data = subreddit.json()
#parse_data = j_data['data']
# append to the dataframe
#df = df.append(pd.DataFrame.from_dict(pd.json_normalize(parse_data), orient='columns'))
# append to the dataframe
df = df.append(pd.DataFrame.from_dict(pd(submission), orient='columns'))
# write the whole CSV at once
df.to_csv(csv_file, index=False, encoding='utf-8')
错误:
Traceback (most recent call last):
File "bot.py", line 21, in <module>
df = df.append(pd.DataFrame.from_dict(pd(submission), orient='columns'))
TypeError: 'module' object is not callable
回溯(最近一次呼叫最后一次):
文件“bot.py”,第21行,在
df=df.append(pd.DataFrame.from_dict(pd(submission),orient='columns'))
TypeError:“模块”对象不可调用
我过去就是这样做的:
df = pd.DataFrame([ vars(post) for post in subreddit.hot(limit=5) ])
vars将praw.Submission
转换为dict,数据帧构造函数可以获取字典列表。如果您的dicts具有相同的键,则效果很好,这里就是这种情况。当然,您会得到一个包含所有列的巨大数据帧。有些甚至有praw对象(可以使用!)。您可能希望在写入文件之前只保留所需的列,从而将其解析下来
编辑:
为了避免混淆,下面是完整的脚本示例:
#/usr/bin/python
进口婴儿车
作为pd进口熊猫
reddit=praw.reddit(‘我的机器人’)
subreddit=reddit.subreddit(“askreddit”)
df=pd.DataFrame([subreddit.hot中post的变量(post)(限制=5)])
df=df[[“标题”、“分数”、“url”]]
df.to_csv(csv_文件,索引=False,编码=utf-8')
我能知道你为什么打电话给pd(提交)?如果pd是您定义的函数,您可能需要将其重命名,pandas作为pd
导入,当执行pd(提交)
时,它将pandas作为模块引用。因此,出现了错误。