在pandas Series或DataFrame中生成组的组合

时间:2013-03-19 10:05:22

标签: python pandas

我有一个像这样设置的大熊猫DataFrame

 Type     time
 A        0
 A        1
 A        2
 B        0
 B        1
 B        2

我需要生成如下结构的列表(或系列):

["A.1-A.0", "A.2-A.0", "B.1"-"B.0", "B.2"-"B.0"]

groupby或类似的功能是否能够生成这样的列表(或系列)?

1 个答案:

答案 0 :(得分:2)

import pandas as pd
from StringIO import StringIO

data =  StringIO("""Type     time
A        0
A        1
A        2
B        10
B        11
B        12""")
df = pd.read_csv(data, delim_whitespace=True, dtype="O")

def set_first(x):
    x["ptime"] = x.time.values[0]
    x = x[1:]
    r = x.Type + "." + x.time + "-" + x.Type + "." + x.ptime
    return r

print df.groupby(df.Type, group_keys=False).apply(set_first)

输出:

1      A.1-A.0
2      A.2-A.0
4    B.11-B.10
5    B.12-B.10