1

我有一个这样的熊猫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或类似的功能是否能够生成这样的列表(或系列)?

4

1 回答 1

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
于 2013-03-19T10:41:43.813 回答