python - 通过从现有列中过滤来创建新变量
问题描述
我有一个数据框。我想根据每个单词的长度创建一个新变量。例如:
数据框:
base
0 d4 d5 c4
1 d4 Nc6 e4
2 e4 e5 d3
3 d4 d5 Nf3
所需的数据框:
base len2 len3
0 d4 d5 c4 d4 d5 c4
1 d4 Nc6 e4 d4 e4 Nc6
2 e4 e5 d3 e4 e5 d3
3 d4 d5 Nf3 d4 d5 Nf3
我是python新手,这是我尝试过的
df['len2'] = filter(len(df['base'].str.split()) == 2, df['base'])
不起作用。
解决方案
df = pd.DataFrame({'base': ['d4 d5 c4', 'd4 Nc6 e4']})
df['len2'] = df['base'].str.split().apply(lambda x: [i for i in x if not i[0].isupper()])
df['len3'] = df['base'].str.split().apply(lambda x: [i for i in x if i[0].isupper()])
输出列的类型是 pd.Series 列表,但您可以转换它们
df['len3'] = df['base'].str.split().apply(lambda x: " ".join([i for i in x if i[0].isupper()]))
如果您的条件是每个元素的长度等于 2 那么
df['len3'] = df['base'].str.split().apply(lambda x: " ".join([i for i in x if len(i) != 2]))
base len3
0 d4 d5 c4
1 d4 Nc6 e4 Nc6
推荐阅读
- javascript - POST 请求无法识别标头
- ios - 自定义 UIButton 中的 UILabel 使用 AutoLayout 调整到按钮的大小
- python - 当用户回答“是”时尝试循环回到程序的开头
- google-sheets-formula - Google 电子表格:使用 QUERY 和 IMPORTRANGE,根据条件在远程工作表上对两个单独的范围求和
- c# - OpenID Connect 是否需要 OAuth 之上的其他库?
- matrix - 轴不匹配数组/大小不匹配,m1:[132096 x 344],m2:[118336 x 128]
- reactjs - 如何修复 setState 在反应上下文中不更新
- android - Firebase 动态链接(创建控制台)是否支持使用 ActionCodeSettings 和密码重置的自定义查询参数?
- javascript - 为什么执行前一个屏幕组件中的 socket.on()?
- android - 使用 StringRequest 连接 spotify APIS 时出现问题