2017-08-09 79 views
1

我認爲這很簡單,但我今天無法弄清楚這一點,需要一些幫助。將數據幀的行與字符串列結合起來

我有一個熊貓數據幀:

df = pd.DataFrame({ 
    'id': [0, 0, 1, 1, 2], 
    'q.name':['A'] * 3 + ['B'] * 2, 
    'q.value':['A1','A2','A3','B1','B2'], 
    'w.name':['Q', 'W', 'E', 'R', 'Q'], 
    'w.value':['B1','B2','C3','C1','D2'] 
}) 

,看起來像這樣

id q.name q.value w.name w.value 
0 0 A A1 Q B1 
1 0 A A2 W B2 
2 1 A A3 E C3 
3 1 B B1 R C1 
4 2 B B2 Q D2 

我期待將其轉換爲

id q.name q.value w.name w.value 
0 0 A A  A1 A2 Q W  B1 B2 
1 1 A B  A3 B1 E R  C3 C1 
2 2 B  B2  Q  D2 

我想pd.DataFrame(df.apply(lambda s: s.str.cat(sep=" ")))但是這並沒有給我想要的結果。我之前做過這些,但我正努力回想起來,或者在SO上找到任何幫助我的帖子。

更新: 我應該提到這之前:有沒有辦法做到這一點,而不指定哪一列? DataFrame基於上下文而改變。

我也更新了數據框,並顯示了一個id字段,因爲我剛剛意識到這是可能的。我認爲現在在id領域的一個groupby應該解決這個問題。

+0

[熊貓GROUPBY串聯多列串]的可能的複製(https://stackoverflow.com/questions/ 32117848/pandas-groupby-concatenate-strings-in-multiple-columns) – Zero

+0

和https://stackoverflow.com/q/23794082 – Zero

+0

你能否通過addi更新問題將另一列添加到數據框及其結果?既然你不想指定列 – Dark

回答

1

UPDATE:

In [117]: df.groupby('id', as_index=False).agg(' '.join) 
Out[117]: 
    id q.name q.value w.name w.value 
0 0 A A A1 A2 Q W B1 B2 
1 1 A B A3 B1 E R C3 C1 
2 2  B  B2  Q  D2 

老答案:

In [106]: df.groupby('category', as_index=False).agg(' '.join) 
Out[106]: 
    category  name 
0  A A1 A2 A3 
1  B  B1 B2 
+0

你好,謝謝你的回答,但是我已經更新了上面的問題。 – vsachar

+0

@vsachar,我也更新了我的答案 – MaxU

+0

我再次更新了數據,但您的解決方案成立。這次真是萬分感謝。 – vsachar

相關問題