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)
我正在尝试定义一个函数,该函数返回状态中员工的所有电子邮件地址的一系列字符串。电子邮件地址应由给定的分隔符分隔。我想我会使用&#34 ;;"。
参数: - DataFrame - 分隔符(;)
我必须使用for循环?说实话,我甚至不知道如何开始这个......
====版
完成编码后,我应该运行
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 :(得分:1)
如果我正确理解问题你正在寻找groupby状态,请收到电子邮件并申请加入,即根据状态加入电子邮件,即
fake = {'EmployeeID' : [0,1,2,3,4,5,6,7,8,9],
'State' : ['NZ','NZ','NY','NY','ST','ST','YK','YK','YK','YK'],
'Email' : ['ab@h.com','bab@h.com','cab@h.com','dab@h.com','eab@h.com','fab@h.com','gab@h.com','hab@h.com','iab@h.com','jab@h.com']
}
fake_df = pd.DataFrame(fake)
ndf = fake_df.groupby('State')['Email'].apply(', '.join)
输出:
State NY cab@h.com, dab@h.com NZ ab@h.com, bab@h.com ST eab@h.com, fab@h.com YK gab@h.com, hab@h.com, iab@h.com, jab@h.com 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])