我有以下Pandas Dataframe (具有相同ID的行数总是相同的):
ID VALUE --------- 1 11 1 12 2 21 2 22 3 31 3 32
我想得到一个扁平的版本,其中每个ID有一行N列,各自的值属于ID的值列(按顺序),如下所示:
ID v1 v2 ---------- 1 11 12 2 21 22 3 31 32
我怎样才能得到想要的结果与Pandas?
4bbkushb1#
我希望这对您有所帮助:
df["tmp"] = df.groupby("ID").cumcount() + 1 df = df.pivot(index="ID", columns="tmp").reset_index() df.columns = [f"{t}_{n}" for t, n in df.columns]
输出:
ID_ VALUE_1 VALUE_2 0 1 11 12 1 2 21 22 2 3 31 32
无论您的ID是什么,重复该脚本都会创建一个后缀为_number的新clomun
fykwrbwg2#
示例
data = {'ID': {0: '1', 1: '1', 2: '2', 3: '2', 4: '3', 5: '3'}, 'VALUE': {0: 11, 1: 12, 2: 21, 3: 22, 4: 31, 5: 32}} df = pd.DataFrame(data)
第一个月
ID VALUE 0 1 11 1 1 12 2 2 21 3 2 22 4 3 31 5 3 32
代码
out = (df.groupby('ID')['VALUE'] .apply(lambda x: pd.Series(list(x))) .unstack().rename(columns=lambda x: f'v{x+1}'))
out
v1 v2 ID 1 11 12 2 21 22 3 31 32
2条答案
按热度按时间4bbkushb1#
我希望这对您有所帮助:
输出:
无论您的ID是什么,重复该脚本都会创建一个后缀为_number的新clomun
fykwrbwg2#
示例
第一个月
代码
out