2017-02-27 1 views
-1

のは、私はいくつかの変数「名」に応じpd.DataFrameを作成する機能を持っているとしましょう:関数から複数のCSVの執筆

def function(name): 
... 
... 
... 
return(DataFrame(name)) #parenthesis 
         #here only to show that the DataFrame will be 
         #different when a different name is given as input. 

私の質問は:私が書くための関数を書くことができますか'name'の可能な値ごとに.csv(一意の名前を持つ)?例えば

、 'name' がリストに属することができます:

出力3異なる.CSVのでしょう
example=['Ben','Steve','Mary'] 

:Ben.csv、Steve.csv、Mary.csv。

答えて

1

私は申し訳ありませんが、あなたの質問については完全にはわかりません:データフレーム内の同じデータを持つ異なるCSVを(あなたの関数から来たものであれ)書きたいのですか、その名前で関連付けられたデータを抽出して、特定の出力CSVファイルに書き込みますか?

あなただけのデータフレームを取り、別のCSVファイルにそれを書きたい場合は、それがすべてでは難しいことではありません。

for name in ['Ben', 'Steve', 'Mary']: 
    pd.to_csv('.'.join([name, 'csv']), delimiter=',', encoding='utf-8') 

あなたがメモリから(名前を与えられたデータフレームから列を抽出したい場合、私は)間違っている可能性:

for name in ['Ben', 'Steve', 'Mary']: 
    user_data = df[[name]] # This will create a copy dataframe. 
    user_data.to_csv('.'.join([name,'csv']), delimiter=',', encoding='utf-8') 
+0

申し訳ありませんが、私はおそらく十分ではありませんでした。この関数は、使用されている名前に応じて、固有のmxn DataFrameを作成します(つまり、関数が使用されている名前に従っていくつかの大きなデータセットのサブセットを設定しているとします)。それぞれの名前で作成された各DataFramesを取り出し、それぞれを.csvファイルとしてエクスポートしたいと思います。私は、あなたの2番目の例が、私がその点で必要としていたものにもっと近いと思います。 – Luke

+0

あなたの2番目の解決策は素晴らしいです:) – Luke

+0

助けになるのはうれしいです:) – mydaemon

2

これは、あなたが探しているもののようだ:

import pandas as pd 

df = pd.DataFrame({'name': ['Ben','Steve','Mary','Ben','Steve','Mary'], 'value': [1,2,3,4,5,6]}) 

def write_custom_csv(name): 
    filtered = df[df['name'] == name] 
    filtered.to_csv(name + '.csv') 

関数内でnameという名前を渡すだけで、関数は渡された名前に基づいてというグローバルpandas.DataFrameをフィルタリングします。その後、「フィルタされた」DataFrameがファイルに書き込まれます。

+0

ああ!私はdf ['name'] == name、良い点でフィルタリングを忘れてしまった! – mydaemon

関連する問題