0
如果我有以下的數據幀...按級別合併數據框行值轉換爲字符串
code
player_id
223336 4
223336 5
223336 4
225987 2
225987 3
225987 4
我如何合併「代碼」列到一個字符串,結果會是什麼樣子......
code
player_id
223336 454
225987 234
謝謝!
如果我有以下的數據幀...按級別合併數據框行值轉換爲字符串
code
player_id
223336 4
223336 5
223336 4
225987 2
225987 3
225987 4
我如何合併「代碼」列到一個字符串,結果會是什麼樣子......
code
player_id
223336 454
225987 234
謝謝!
你可以
astype
),groupby
到組這些值根據索引,最後''.join
import pandas as pd
df = pd.read_table('data', sep='\s+')
df = df.set_index('player_id')
strjoin = ''.join
print(df['code'].astype(str).groupby(df.index).agg(strjoin))
個
產量
player_id
223336 454
225987 234
Name: code, dtype: object
另一種選擇是
groupby
索引,join_digits
,其通過10 功率中的值相乘,然後相加的聚集組結果。astype(str)
到整數轉換爲字符串def join_digits(series):
return (series * 10**np.arange(len(series)-1, -1, -1)).sum()
df['code'].groupby(df.index).agg(join_digits).astype(str)
產量
player_id
223336 454
225987 234
Name: code, dtype: int64
注意,但是,使用整數計算會給出不同的結果,如果第一種方法在df['code']
中的整數不是一位數字。而且,如果最左邊的數字是零,則零點將被丟棄。
如果對某個問題曾經有過pythonic答案,那就是這個。 – 2015-01-21 02:27:08
什麼是您的數據源?文本文件或數據庫? – 2015-01-21 02:09:08
只是這6個值,還是一個通用的解決方案? IE會一直用三個值塊來做這件事嗎? – 2015-01-21 02:09:40
這只是DataFrame的一部分......所以是一個通用的解決方案。 – TravisVOX 2015-01-21 02:10:21