2016-10-16 6 views
1

あなたは、データフレームを作成するためにこれを使用することができます:パンダの分割データを逆順に保存するにはどうすればいいですか?

dataframe[['day','month','year']] = dataframe['release'].str.rsplit(expand=True) 

xyz = pd.DataFrame({'release' : ['7 June 2013', '2012', '31 January 2013', 
           'February 2008', '17 June 2014', '2013']}) 

私は、このコマンドを使用して、「日、月、年」と名付けられた3列に、データを分割して保存するためにそれらをしようとしています

結果のデータフレームがある: dataframe

あなたが見ることができるように、それは3つの文字列を取得しますが、それは少ないし、3つの文字列を取得するたびに、それは間違った場所にデータを保存するとき、それは完璧に動作していること。

私はsplitとrsplitを試しましたが、どちらも同じ結果を示しています。 データを適切な場所に取得するためのソリューションはありますか?

最後の1つはすべての条件に存在し、最初に保存する必要があります。そうでない場合は、月が保存されます。

+0

http://stackoverflow.com/questions/20444087/right-way-to-reverse-pandas-dataframeの可能性のある重複 –

+1

これは、[XYの問題]のように見えます(http://meta.stackexchange.com/a/66378)。あなたの最終目標は何ですか?単に 'pd.to_datetime(xyz.release)'の後にいますか? – MaxU

答えて

2

あなたは可能性があり

In [17]: dataframe[['year', 'month', 'day']] = dataframe['release'].apply(
                lambda x: pd.Series(x.split()[::-1])) 
In [18]: dataframe 
Out[18]: 
      release year  month day 
0  7 June 2013 2013  June 7 
1    2012 2012  NaN NaN 
2 31 January 2013 2013 January 31 
3 February 2008 2008 February NaN 
4  17 June 2014 2014  June 17 
5    2013 2013  NaN NaN 
+0

答えをありがとう、それは完全に小さなデータセットで動作します。しかし、私は大きなデータセット(200万レコード)でそれを使用していると、多くの時間とメモリが必要です。 – user2965412

0

結果を逆にしてみてください。

dataframe[['year','month','day']] = dataframe['release'].str.rsplit(expand=True).reverse() 
+0

データフレームには逆の方法がありますか?私はそうは思わない。 – Zero

+0

ああ、そうです、そうではありません。私はあなたのやり方が当てはまると思います。 –

関連する問題