0

いくつかのコードを使用して、2 つの csv をマージし、これらを 2 つの列で並べ替えています。新しい csv を出力しています。入力 csv は同じ名前で、1 と 2 だけ番号が付けられています。複数のデータ セットに対してこのコードを繰り返しています。元のファイル名の最初の部分を含むファイル名をコードに出力させる方法はどうなるのだろうと思っていました。

私の現在のコード:

import pandas as pd

df1 = pd.read_csv("data csv 1\September 2013 1 UUedit1.csv", delimiter = ",")
df2 = pd.read_csv("data csv 1\September 2013 2 UUedit2.csv", delimiter = ",")
merged = df1.merge(df2, on="Unique Element")
delcols = "Element_y", "number_y", "date_y", "title_y", "name_y"

for delcol in delcols:
    del merged[delcol]
    
merged.rename(columns={"name_x": "name", "rdate_x": "date", "title_x": "title", "number_x": "number", "Element_x": "Element"}, inplace = True)
merged = merged.sort("Element").reset_index(drop=True)
merged = merged.sort("date").reset_index(drop=True)
merged.to_csv("MRG.csv", index=False, sep = ",")

したがって、この例では、両方の入力ファイルがSeptember 2013「number」「UUedit」と呼ばれていSeptember 2013 MRG.csvます。これをどのようにコーディングできるので、コードにファイル名を直接出力させたいですか? 2 つの元のファイルがあったかどうかを明確にするためにOctober 2013、出力は次のようになりますOctober 2013 MRG.csv

編集

Christian Ternus から提供されたコードを実行すると、次のプリントとトレースバックを受け取りました。

Usage: C:/Test.py <month> <year>
Traceback (most recent call last):
  File "C:/Test.py", line 7, in <module>
    month, year = sys.argv[1:]
ValueError: need more than 0 values to unpack

2 番目の変数を何に設定すればよいかわかりません。
どうもありがとう
GTPE

編集 2

CMD と呼んでコードを機能させることができましたが、Python を介してスクリプトを呼び出そうとしてもうまくいかなかったようです。私は次のことを試しました:

import subprocess
p = subprocess.Popen(['python', 'RawDataSheetMergerPandasTest.py September 2013'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = p.communicate()
print out
4

2 に答える 2

0

任意の数の入力ファイルを受け入れる組み込みos.path.commonprefix関数を使用できます。

import os

filenames = ['data csv 1\September 2013 1 UUedit1.csv',
             'data csv 1\September 2013 2 UUedit2.csv',]

merged_filename = os.path.commonprefix(filenames).rstrip(' ') + ' MRG.csv'
print repr(merged_filename)  # --> 'data csv 1\September 2013 MRG.csv'
于 2013-10-30T17:32:47.087 に答える