私は現在、いくつかの問題がある日付の列を持っています。私は問題を解決しようとしましたが、結論に至ることはできません。ここでパンダのデータフレームでRegexループを実行する
はデータです:
# Import data
df_views = pd.read_excel('PageViews.xlsx')
# Check data types
df_views.dtypes
Out[57]:
Date object
Customer ID int64
dtype: object
予想通り日付列は「日時」データフォーマットではありません。また、検査利回り:
df_views.ix[:5]
Date Customer ID
0 01/25/2016 104064596300
1 02/28/2015 102077474472
2 11/17/2016 106430081724
3 02/24/2016 107770391692
4 10/05/2016 106523680888
5 02/24/2016 107057691592
私はすぐに適切な形式に従わない行をチェックXX/XX/XXXX
print (df_views[df_views["Date"].str.len() != 10])
Date Customer ID
189513 12/14/ 106285770688
189514 10/28/ 107520462840
189515 11/01/ 102969804360
189516 11/10/ 102106417100
189517 02/16/ 107810168068
189518 10/25/ 102096164504
189519 02/08/ 107391760644
189520 02/29/ 107353558928
189521 10/24/ 107209142140
189522 12/20/ 107875461336
189523 12/23/ 107736375428
189524 11/12/ 106561080372
189525 01/27/ 102676548120
189526 11/19/ 107733043896
189527 12/31/ 107774452412
189528 01/21/ 102610956040
189529 01/09/ 108052836888
189530 02/21/ 106380330112
189531 02/02/ 107844459772
189532 12/12/ 102006641640
189533 12/16/ 106604647688
189534 11/14/ 102383102504
私はforループを作成しようとしましたが、私にアプローチする方法を見つけ出すことはできませんループ。
重要な注意:私は月が09/10/11/12であれば2月2016
を通じてすべての観測のための期間は2015年9月の間にあることを知っている - そして、私は「2015」を追加することができます日付、 月が01/02の場合は、「2016」を追加できます。
for row in df_views["Date"]:
if len(row) != 10:
if row.str.contains("^09|10|11|12\/"):
row.str.cat("2015")
elif row.str.contains("^01|02\/"):
row.str.cat("2016")
else:
continue
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-87-684e121dd62d> in <module>()
5 for row in df_views["Date"]:
6 if len(row) != 10:
----> 7 if row.str.contains("^09|10|11|12\/"):
8 row.str.cat("2015")
9 elif row.str.contains("^01|02\/"):
AttributeError: 'str' object has no attribute 'str'
'row'は文字列であるようです。だからあなたが試しているすべてのメソッド(catを含む)は動作する可能性は非常に低いです。 –
forループを使用しないでください。 Seriesで直接使用している '.str'操作をそのまま使用してください。それらを微調整する必要があるかもしれませんが、明示的反復よりも速くなります。 – BrenBarn