Python 将熊猫与婴儿车一起使用

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("

我在学习如何使用API,我想我应该做一个Reddit机器人。我正在尝试应用一些用于不同脚本的代码。该脚本使用请求将请求转换为json,然后将其添加到数据帧,然后编写csv。我也试着这么做,但不知道如何将Reddit数据运行到数据帧中。我在下面尝试的方法会出现错误

#!/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作为模块引用。因此,出现了错误。