2017-07-27 4 views
0

大丈夫、解決策を見つけることができないので、私の質問はここにあります。私は結果を提出しなければならないので、stackoverflowコミュニティの誰かがすぐに解決策を提案できるかどうか本当に感謝します。特定の条件の下で2つのCSVファイルまたはデータフレームを連結します。

私は2つのcsvファイルを持っています(データフレームとして読み込むことができます)。 1つのcsvファイルには1458644行と12個の列があり、すべての行エントリは6か月間の複数日の秒までのイベントを指定します。

気象データと他のcsvファイルは、私がやりたいことのエントリを組み合わせることで、6ヶ月

の時間を指定し、毎日の気象データと4432個のエントリ、(ここでは無い秒の期間を)持っています第2のデータフレームの時間エントリからのデータが第1のデータフレームに追加されるが、第2のデータフレームで指定された1時間のエントリは複製され、繰り返されるように、いくつかのパイソン演算を使用して(または条件と連結して)最初のデータフレームの1時間

まずDATAFRAME

Date:      col1, cl2, 
1/2/2013 12:05:00   yyy etc. 
1/2/2013 12:12:00   yyy 
1/2/2013 13:13:00   yyy 
1/2/2013 14:14:00   yyy 
1/2/2013 14:30:00   yyy 
1/2/2013 14:45:00   yyy 
1/2/2013 17:00:00   yyy 
1/2/2013 17:17:00   yyy 
1/2/2013 17:30:00   yyy 
1/2/2013 18:17:00   yyy 
1/2/2013 18:30:00   yyy 

第二DATAFRAME

Date      col3 col4 
1/2/2013 12:00:00   xxx overcast 
1/2/2013 13:00:00   xxx overcast 
1/2/2013 14:00:00   xxx sunny 
1/2/2013 15:00:00   xxx sunny 
1/2/2013 16:00:00   xxx rain 
1/2/2013 17:00:00   xxx rain 
1/2/2013 18:00:00   xxx cloudy 

最終的な結果は次のようになります。

Date:      col1, col2, col3, col4 
1/2/2013 12:05:00   yyy etc. xxx overcast 
1/2/2013 12:12:00   yyy   xxx overcast 
1/2/2013 13:13:00   yyy   xxx overcast 
1/2/2013 14:14:00   yyy   xxx sunny 
1/2/2013 14:30:00   yyy   xxx sunny 
1/2/2013 14:45:00   yyy   xxx sunny 
1/2/2013 17:00:00   yyy   xxx rain 
1/2/2013 17:17:00   yyy   xxx rain 
1/2/2013 17:30:00   yyy   xxx rain 
1/2/2013 18:17:00   yyy   xxx cloudy 
1/2/2013 18:30:00   yyy   xxx cloudy 
+0

したがって、各レコード/行のためのフレーム1にあなたがフレーム2で同じ時間を検索し、そのcolunms ?また、1から2の間でさまざまな数の一致があります。 – hpaulj

答えて

-2

私はあなたがこの問題を解決するためのpythonを必要としないと思います。 Excelの "vlookup()"コマンドを使用してこの問題を解決することができます。 1. 2つのcsvファイルの最初の列を非表示にします。 2.分割機能を使用して時間を取得する。 3. "vlookup"コマンドを使用して2つのデータを結合します。

希望は、我々は適切な日付時刻に変換する場合、これはかなり簡単です、あなたに

+1

この種のデータ処理には、ExcelよりPythonを好む理由がたくさんあります。 – asongtoruin

+0

あなたはすべて正しいです。しかし、Pythonを使用すると同じ問題が発生します。大きなファイルには多くのバッファスペースが必要です。この問題をどう扱うか。 –

+0

@BaoLiwenパンダで大きなファイルを扱う場合は、状況によってはそのような問題を回避するのに役立つチャンク内のデータを読むことができます。そうしないと、データベースが必要になることがあります。 – asongtoruin

2

を助けることができる:

df1['Date'] = pd.to_datetime(df1['Date']) 
df2['Date'] = pd.to_datetime(df2['Date']) 

df1['Hour'] = pd.DatetimeIndex(df1['Date']).floor('h') 

combined = df1.merge(df2, left_on='Hour', right_on='Date', how='left', 
        suffixes=('', '_r')) 
combined.drop(['Hour', 'Date_r'], axis=1, inplace=True) 
+0

くそー、ありがとう、それは魅力のように働いた。また、結合されたファイル内のRIGHT(df2)データフレームから完全に欠けている行があるようです。私は2番目のデータフレームをチェックしましたが、値が欠けている列がいくつかありますが、2番目のデータフレームの行エントリは完全に空ではありません。どんなアイデア、これを引き起こしているかもしれない! –

+0

@Jon_Snow_喜んで助けになります。私はあなたが何を意味しているのかは分かりません - 日時の一部が正しく変換されていないと言っていますか? – asongtoruin

+0

いいえ、私は結合されたファイルの2番目のデータフレームのエントリが最初のデータフレームのエントリに対して完全にいくつかの行に欠けていることを意味します。 df1のような値がその行にありますが、df2の値はまったくありません datetimesが正しく変換されていると思いますが、変換が2番目のdfから失敗したようです。 1つのエントリ、たとえば結合ファイルの日時に12:00に行方不明です。私はdf2をチェックし、その時間の値が存在する。 –

関連する問題