首页 > 解决方案 > 熊猫:条件 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)

标签: python-3.xpandas

解决方案


可能不是一个优雅的答案,但我相信这有效:

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)


推荐阅读