我有一个数据框是从一个较大的框架中解析出来的,该框架看起来像:
Contract Date
2012.0
2011.0
2011.0
2010.0
1312.0
1235.0
1235.0
1235.0
1230.0
.
.
111.0
111.0
110.0
110.0
我已经将整个内容转换为字符串,以便可以对值进行切片,因为这些日期的格式非常奇怪。
2012.0 - 2010.0
基本上是每年的12月(2012年-2010年),但是1235.0
和110.0
之类的日期是MMYY格式-1235.0
是2035年12月,{ {1}}是2010年1月。
我想要做的是一个简单的循环来迭代这些日期,并根据我上面描述的条件将它们转换成月份和年份。我尝试通过使用110.0
的错误尝试来首先获取月份:
iterrows
但是,这没有用,并且循环了很长的时间-可能是因为我需要for index, row in contract.iterrows():
if len(row) > 4:
contract['Month'] = contract['Contract_Exp_Date'].str[:2]
else:
contract['Month'] = contract['Contract_Exp_Date'].str[:1]
到一个新列,而不是每次迭代都创建一个新列appending
。
如何根据我上面提到的条件正确遍历每一行并刮擦月份和年份?
答案 0 :(得分:1)
不需要条件,只需使用除最后三个字符外的所有逻辑,这样编写逻辑:
2018.0
^^^
removed
111.0
^^^
removed
因此使用:
df['Contract']=df['Contract'].str[:-3]
现在:
print(df['Contract'])
是:
0 201
1 201
2 201
3 201
4 131
5 123
6 123
7 123
8 123
9 11
10 11
11 11
12 11
Name: Contract, dtype: object