Python新手问题——大txt文件按条件将多行合并
迷茫
迷茫 2017-04-18 10:34:26
0
8
648

数据格式如下:
······
1107 1385331000000 1.3142511607126754
1107 1385331000000 0.0021683196661660157
1107 1385331600000 0.0021683196661660157
1107 1385331600000 1.4867805985670923
1107 1385331600000 0.0021683196661660157
1107 1385332200000 1.1697626938303243
1107 1385332800000 0.0021683196661660157
1107 1385332800000 0.005813069022279304
1107 1385332800000 1.2847329440609827
1107 1385332800000 0.0021683196661660157
1107 1385333400000 1.2891586380834603
1108 1385247600000 0.026943168177151356
1108 1385247600000 6.184696475262653
1108 1385248200000 0.05946288920050806
1108 1385248200000 6.359572785335356
1108 1385248200000 0.010602880590260044
1108 1385248800000 0.026943168177151356
1108 1385248800000 5.568047923787272
1108 1385249400000 0 0.01024202685104009
1108 1385249400000 5.213017822855314
1108 1385250000000 0.01024202685104009
1108 1385250000000 5.385327254217893
1108 1385250600000 0.016259860511678353
1108 1385250600000 4.902644074658115
1108 1385251200000 4.141288808488436
1108 1385251800000 0.05388633635430271
1108 1385251800000 4.684096694966861
1108 1385251800000 0.01024202685104009
1108 1385252400000 4.386580113177049
1108 1385253000000 4.582219390797833
1108 1385253600000 5.211061096279831
1108 1385254200000 0.02048405370208018
1108 1385254200000 3.901546051563316
1108 1385254200000 0.01024202685104009
1108 1385254800000 4.0387888693118255
······
每一行数据间是tab键隔开的
第一列是标号,第二列是UTC格式时间戳,第三列是流量数据,每行的数据是10分钟内的,现在想把同一个标号的比如第一列为1107的每一小时的数据叠加起来成为新的一行(第二列的时间可以用时间戳表示或者以时间间隔表示),完全没有头绪,请大神指点指点

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全員に返信(8)
黄舟

自分で解決しましたが、複雑かもしれませんが、ニーズを満たすことができます

リーリー
いいねを押す +0
左手右手慢动作

時系列に基づいている場合は、ジェネレーターを使用して元のファイルを読み取り、新しい行を生成して出力するだけです。

いいねを押す +0
左手右手慢动作

pandas はニーズを解決し、データをデータフレームに読み込んで処理します

いいねを押す +0
刘奇

これは、お持ちのデータ量によって異なります

  1. readlines()を使用せずにファイルハンドルトラバーサルを使用します(メモリが十分でない可能性があります)

  2. 情報を保存するには辞書に似たデータ構造を使用します。メモリが十分でない場合は、中間情報をディスクなどに書き込む方法を見つける必要があります。

一般的な考え方は次のとおりです

リーリー
いいねを押す +0
PHPzhong

ラベルと時間の 2 つのインジケーターに基づいて統計をグループ化し、to_datetime を使用してタイムスタンプを時間列に変換し、次に groupby を使用してラベルを分類します。同時に1時間を計測し、合計します。

いいねを押す +0
黄舟

このアイデアをぜひご活用ください
https://www.zhihu.com/questio...

いいねを押す +0
阿神

それを行う前に、データ形式を少し分析できると思います
1.最初の列は日付を表し、結果配列の最初のレベルのキーとして使用できます、result[date]
2。時間 (分) のタイムスタンプのように見える必要があるため、時間ごとの結果が必要な場合は、result[data] 項目ごとに 24 個の要素を初期化します。キーは時間数 (対応する時間数のタイムスタンプの値) です。をキーとして使用できます)、キーの値はこの 1 時間内のデータの合計、つまり resultdate
3 に対応します。結果の配列を初期化した後は、ファイルを 1 行ずつ走査して処理するだけです。各行は最初に 1107 などの最初の列の値を読み取り、
は result[1107] を操作します。次に、2 番目の列を読み取り、対応する timetimestamp キーを見つけて、それを合計します。
4. 最後に、結果配列を走査して結果を出力します。

いいねを押す +0
Peter_Zhu

必要なもの:

リーリー

これは 10 行未満のコードで実行できます。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!