【发布时间】:2018-04-17 17:11:55
【问题描述】:
所以friends 是一个在每个实例中都有一个列表的列,例如df['friends][0] = [id1, id2, ..., idn]。我正在尝试在单独的列中计算朋友的数量,例如df['friend_counts'][0] = n。
我做了以下事情。我在其他数据集中使用过这段代码,但由于某种原因,它需要很长时间,而且数据集只有 300,000 个实例。
df_user['friend_counts'] = df_user['friends'].apply(lambda x: len(df_user.friends[x]))
此外,出于某种原因,以下代码创建了一个 season 列,但未填充,即它只是空格。这很麻烦,因为我对所有其他数据集都执行了完全相同的代码。他们是否更改了.apply() 方法?
#Convert 'date' to a date time object
df_reviews["date"] = pd.to_datetime(df_reviews["date"])
#Splitting up 'release_date' -> 'release_weekday', 'release_month',
'release_year'
df_reviews["weekday"] = df_reviews["date"].dt.weekday_name
df_reviews["month"] = df_reviews["date"].dt.month
df_reviews["year"] = df_reviews["date"].dt.year
### Helper function
def season_converter(month_name):
""" Returns the season a particular month is in """
season = ""`enter code here`
#Winter
if month_name in ['Jan', 'Feb', 'Dec']:
season = "Winter"
#Spring
if month_name in ['Mar', 'Apr', 'May']:
season = "Spring"
#Summer
if month_name in ['Jun', 'Jul', 'Aug'] :
season = "Summer"
#Fall
if month_name in ['Sep', 'Oct', 'Nov']:
season = "Fall"
#Other
if month_name == "NA":
season = "NA"
return season
#Create a new column that holds seasonal information
df_reviews['season'] = df_reviews['month'].apply(lambda x:
season_converter(x))
【问题讨论】:
-
对您的代码的简短扫描表明,season_converter() 函数接收到一个字符串的月份名称,但您在 lambda 函数中将一个整数传递给它 (df_reviews['month']) .
-
@floydn 你说得对,我想我在复制和粘贴时忘记添加另一个帮助函数。就
friends代码而言,它只是计算密集型的,对吧?我只需要等待它完成吗?
标签: python-3.x pandas apply