根据字符串的长度追加

根据字符串的长度追加

我有这样的df:

Year   Month  Day
1984   1      1
1985   12     22


我想使MonthDay无论什么都具有两位数字。所以我想要的数据帧是这样的:

Year   Month  Day
1984   01     01
1985   12     22


我一直在玩这个:

for i in df.Month:
    i=str(i)
    if len(i) < 2:
        i='0' + i
    print i


但我不确定如何实际将新值重新插入数据框,而且我很确定首先有一种更好的方法

最佳答案

您可以使用astype转换为string并使用zfill填充0

#df['Year'] = df['Year'].astype(str) #if column Year has to be string
df['Month'] = df['Month'].astype(str).str.zfill(2)
df['Day'] = df['Day'].astype(str).str.zfill(2)
print df
   Year Month Day
0  1984    01  01
1  1985    12  22


如果所有列的type必须转换为string

df = df.astype(str)
df['Month'] = df['Month'].str.zfill(2)
df['Day'] = df['Day'].str.zfill(2)
print df


时间:

In [225]: %timeit df1.apply(lambda x: x.astype(str).str.zfill(2), axis=1)
1 loops, best of 3: 500 ms per loop

In [226]: %timeit a(df)
100 loops, best of 3: 10.8 ms per loop


码:

df1 = df.copy()

def a(df):
    df = df.astype(str);
    df['Month'] = df['Month'].str.zfill(2);
    df['Day'] = df['Day'].str.zfill(2);
    return df

print df1.apply(lambda x: x.astype(str).str.zfill(2), axis=1)
print a(df)

关于python - 根据字符串的长度追加,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36145803/

10-10 08:11