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