2017-09-29 13 views
-1
fake = {'EmployeeID' : [0,1,2,3,4,5,6,7,8,9], 
      'State' : ['a','b','c','d','e','f','g','h','i','j'], 
      'Email' : ['a','b','c','d','e','f','g','h','i','j'] 
       } 
fake_df = pd.DataFrame(fake) 

状態の従業員のすべての電子メールアドレスの一連の文字列を返す関数を定義しようとしています。電子メールアドレスは、区切り文字で区切る必要があります。私は ";"を使用すると思います。データフレームからシリーズを取り出す方法は?

引数: - DATAFRAME - 区切り文字(;)

は、私がforループを使用する必要がありますか?正直に言うと、私もこれで起動する方法がわからない...

==== EDITION

コーディングで行われた後、私は

emails = getEmailListByState(fake_df, ", ") 
for state in sorted(emails.index): 
    print "%15s: %s" % (state, emails[state]) 

を実行する必要がありますし、のようなものを取得する必要があります私は問題を正しく理解していれば、私の出力として

a: a 
b: b 
c: c,d 
d: e 
e: f,g 

+0

持っていることをしたい場合DataFrame [indexing](https://pandas.pydata.org/pandas-docs/stable/indexing.html)と[参加](https://docs.python.org/2/library/stdtypes.html#)をご覧ください。 str.join)文字列の繰り返し可能性 – bunji

+0

BTw、あなたの期待するものは何ですか – Wen

+0

私は自分の投稿を編集しました –

答えて

1

あなたはgrouを探していますPBY状態は、IEは状態に基づいて電子メールを結ぶ加入電子メールを取得し、適用

fake = {'EmployeeID' : [0,1,2,3,4,5,6,7,8,9], 
     'State' : ['NZ','NZ','NY','NY','ST','ST','YK','YK','YK','YK'], 
     'Email' : ['[email protected]','[email protected]','[email protected]','[email protected]','[email protected]','[email protected]','[email protected]','[email protected]','[email protected]','[email protected]'] 
      } 
fake_df = pd.DataFrame(fake) 

ndf = fake_df.groupby('State')['Email'].apply(', '.join) 

出力:

 
State 
NY       [email protected], [email protected] 
NZ       [email protected], [email protected] 
ST       [email protected], [email protected] 
YK [email protected], [email protected], [email protected], [email protected] 
Name: Email, dtype: object 

あなたはこの方法では、その後

def getEmailListByState(df,delim): 
    return df.groupby('State')['Email'].apply(delim.join) 

emails = getEmailListByState(fake_df, ", ") 
for state in sorted(emails.index): 
    print("%15s: %s" % (state, emails[state]) 
関連する問題