熊猫数据框行的条件循环

时间:2018-12-11 01:59:11

标签: python string python-3.x pandas

我有一个数据框是从一个较大的框架中解析出来的,该框架看起来像:

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.0110.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

如何根据我上面提到的条件正确遍历每一行并刮擦月份和年份?

1 个答案:

答案 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