2016-01-13 53 views
2

GROUPBY對象我有一個數據幀等操作上大熊貓在for循環中

df = pd.DataFrame({'A': ['foo', 'bar','cat'] * 3, 
      'B': ['i','who','he','am','are','said','satya','you','hello'], 
      'C': [5, 2, 3, 4, 6, 9,12,23,45]}) 
df 
Out[47]: 
A  B C 
0 foo  i 5 
1 bar who 2 
2 cat  he 3 
3 foo  am 4 
4 bar are 6 
5 cat said 9 
6 foo satya 12 
7 bar you 23 
8 cat hello 45 

我如下將它們分組:

g = df.groupby('A') 
for name, group in g: 
    print(name) 
    print(group) 

得到O/P爲:

bar 
    A B C 
1 bar who 2 
4 bar are 6 
7 bar you 23 
cat 
    A  B C 
2 cat  he 3 
5 cat said 9 
8 cat hello 45 
foo 
    A  B C 
0 foo  i 5 
3 foo  am 4 
6 foo satya 12 

所以我需要做的是我想對每個組我會遍歷(我不知道)在列遍歷每個組,再而Concat的值的牛逼列B,這樣我可以得到類似

bar = who are you 
cat = he said hello 
foo = i am satya 

我不能做一個agg功能。任何人都可以建議如何做到這一點?

回答

3

IIUC可以groupbyA,然後apply一個lambda來join字符串值:

In [185]: 
df.groupby('A')['B'].apply(' '.join) 

Out[185]: 
A 
bar  who are you 
cat he said hello 
foo  i am satya 
Name: B, dtype: object 
+0

@ EdChum偉大help..problem solved..Btw我能問這個方面,我沒有的東西在問題中提到... – Satya

+0

沒有人能問阻止你,所以只能選擇是否響應 – EdChum

+0

其實我有一些文件名以代替列B.字符串所以,如果我想讀每個羣組在每個CSV文件,追加他們。我怎麼能達到那個..需要你的幫助! – Satya