python - 为什么函数不适用于数据框?系列对象没有称为查询的属性(熊猫)
问题描述
我有一个数据框用户,并且调用了公共列是 user_id 的地方。我需要在 churn 不为空的用户数据框中删除值并删除调用中的那些 user_id 行。
users = user_id,first_name,last_name,age,city,reg_date,plan,churn_date
1000,Anamaria,Bauer,45,"Atlanta-Sandy Springs-Roswell, GA MSA",2018-12-24,ultimate,
1001,Mickey,Wilkerson,28,"Seattle-Tacoma-Bellevue, WA MSA",2018-08-13,surf,
1002,Carlee,Hoffman,36,"Las Vegas-Henderson-Paradise, NV MSA",2018-10-21,surf,
1003,Reynaldo,Jenkins,52,"Tulsa, OK MSA",2018-01-28,surf,
1004,Leonila,Thompson,40,"Seattle-Tacoma-Bellevue, WA MSA",2018-05-23,surf,
1005,Livia,Shields,31,"Dallas-Fort Worth-Arlington, TX MSA",2018-11-29,surf,
1007,Eusebio,Welch,42,"Grand Rapids-Kentwood, MI MSA",2018-07-11,surf,
1008,Emely,Hoffman,53,"Orlando-Kissimmee-Sanford, FL MSA",2018-08-03,ultimate,
1009,Gerry,Little,19,"San Jose-Sunnyvale-Santa Clara, CA MSA",2018-04-22,surf,
1010,Wilber,Blair,52,"Dallas-Fort Worth-Arlington, TX MSA",2018-03-09,surf,
calls = id,user_id,call_date,duration
1000_93,1000,2018-12-27,8.52
1000_145,1000,2018-12-27,13.66
1000_247,1000,2018-12-27,14.48
1000_309,1000,2018-12-28,5.76
1000_380,1000,2018-12-30,4.22
1000_388,1000,2018-12-31,2.2
1000_510,1000,2018-12-27,5.75
1000_521,1000,2018-12-28,14.18
1000_530,1000,2018-12-28,5.77
1000_544,1000,2018-12-26,4.4
filter_user = users[users['churn_date'].notnull()]["user_id"].tolist()
我正在创建一个函数来使用来自 filter_user 的 user_id 列表
def new(df):
df = df.query('user_id != @filter_user')
return df
我想应用其他数据框并从 filter_user 中删除包含 user_ids 的行,这就是为什么将上述函数应用于其他数据框
calls.apply(new,axis=1)
AttributeError: 'Series' object has no attribute 'query' 为什么会出现这个错误?
解决方案
当你运行时calls.apply(some_action, axis=1)
,它会调用some_action
你数据框的所有行的函数calls
。
因此,您应该更改new
函数以使用pd.Series
行数,或者使用其他技术过滤用户。最简单的方法是使用df.isin()
方法:
df = df[ df.user_id.isin(filter_user ) ]
df.isin
用于检查 DataFrame 中的每个元素是否包含在值中。
推荐阅读
- java - Android FileObserver 不触发 onEvent
- git - 发布主要版本的 Git 分支策略
- variables - Jinja2 for 循环中的变量别名
- css - Angular 风格背景图片 url + 线性渐变
- swift - UIActivityViewController 发送 UIImage
- jenkins - Jenkins 管道作业的 config.xml 在构建时重置为克隆任务的默认参数值
- python - Python通过文本文件登录
- jenkins - 迭代 Jenkins groovy 地图,有多个集合
- c# - Apache Ignite LINQ AND 位运算符
- json - JsonHubProtocol 正在尝试解析我返回的 Json 字符串