python - 编写 python 代码以使用条件语句从现有列创建新的 csv 列
问题描述
我是 python 编码的新手,想根据现有列的条件语句创建一个新列。
我使用 python 2.7 版本并在 CentOs 上运行代码。
import pandas as pd
file1 = pd.read_csv("/root/Documents/temp_file_{}.csv".format(timestr))
file1['FileName'] = ''
file1['FileName'] = file1['FileType'].apply(lambda x: df['Path'].str.extract('[^/]+$', expand=False) if x=='f' else '')
file1.to_csv('/root/Documents/temp1_file_{}.csv'.format(timestr),index = False)
以下是我的 CSV 文件:
FileType,Path
d,/
f,/documents/csv/.zip
d,/documents/images
d,/hive/28374849
f,/hadoop/jdjdjd/dnejfn.img
所需的 CSV 文件:
FileType,Path,FileName
d,/,
f,/documents/csv/.zip,.zip
d,/documents/images,
d,/hive/28374849,
f,/hadoop/jdjdjd/dnejfn.img,dnejfn.img
我想创建一个新列 FileName ,仅当列 Filetype=='f' 时,该列中的数据才应从 Path 列中提取,否则该列中的数据应为空值或无数据
解决方案
numpy.where
与 一起使用pandas.Series.str.rsplit
:
import numpy as np
import pandas as pd
df['FileName'] = np.where(df['FileType'].eq('f'),df['Path'].str.rsplit('/').str.get(-1), '')
输出:
FileType Path FileName
0 d /
1 f /documents/csv/.zip .zip
2 d /documents/images
3 d /hive/28374849
4 f /hadoop/jdjdjd/dnejfn.img dnejfn.img
推荐阅读
- java - 我们可以将链表中最后一个元素的指针带回第一个元素吗?
- android - 在 EditText 中未调用 Clickable Span onClick
- javascript - 跨域的 React fetch 调用引发 404 错误
- javascript - 如何修复依赖的 jQuery 下拉选择代码?
- regex - 关于正则表达式编辑声明并删除部分电子邮件/用户名的问题
- python - Suppressing multi-threading in used libraries?
- ember.js - Ember - 编译错误:bs-form-element 不是助手
- jquery - Jquery show hide Div 部分的好解决方案
- java - Uber API 的稍后预订选项
- python-3.x - 根据列表中的值之一对列表中的字典进行排序