python-3.x - 熊猫:条件 str.split
问题描述
我想知道如何最好地在数据框中有条件地拆分字符串,以便正确的值到达正确的列。当字符串的长度发生变化时,请考虑以下情况。时间以小时、分钟、秒为单位。
time = ['22:35', '1:20:20']
df = pd.DataFrame({'time': time})
df
time
0 22:35
1 1:20:20
尝试了这种变化:
for i in df['time']:
if len(i) == 5:
df[['minutes', 'seconds']] = df['time'].str.split(':', expand=True)
if len(i) == 7:
df[['hours', 'minutes', 'seconds']] = df['time'].str.split(':', expand=True)
解决方案
可能不是一个优雅的答案,但我相信这有效:
time = ['22:35', '1:20:20']
templist = [item.split(":") for item in time]
templist2 = []
for item in templist:
if len(item) == 3:
thisdict = {
"hours": item[0],
"minutes": item[1],
"seconds": item[2]
}
templist2.append(thisdict)
elif len(item) == 2:
thisdict = {
"hours": "0",
"minutes": item[0],
"seconds": item[1]
}
templist2.append(thisdict)
elif len(item) == 1:
thisdict = {
"hours": "0",
"minutes": "0",
"seconds": item[0]
}
templist2.append(thisdict)
df = pd.DataFrame(templist2)
推荐阅读
- javascript - 如何在索引中使用表达式时遍历数组数组
- python - Python pandas数据框根据字符串长度更改内容
- java - 如何在 JFrame 窗口中实时显示多个图像?
- docker - 为什么无人机无法使用插件/docker 找到我的仓库名称?
- php - 从会话数组 php 中获取单个元素以通过 MySQL SELECT 语句
- javascript - 防止 MongoDB 中的重复文档?
- javascript - 对类别和子类别的数组进行排序
- python - 在python pandas中连接两个数据框中的选定列
- java - 为什么 .length 给我返回语句的长度而不是用户输入?
- php - 在 Codeigniter 中生成 URL 安全的加密 id