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