如果我有以下DataFrame ......
code
player_id
223336 4
223336 5
223336 4
225987 2
225987 3
225987 4
如何将“code”列合并为一个字符串,以便结果看起来像......
code
player_id
223336 454
225987 234
谢谢!
答案 0 :(得分:5)
你可以
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']
中的整数不是单位数字,则使用整数计算会得到与第一种方法不同的结果。而且,如果最左边的数字为零,则零将被丢弃。