【发布时间】:2019-10-19 09:14:20
【问题描述】:
我有以下 Python pandas 数据框: EventName 的数量比该日期显示的要多。 每个都有 Race_Number = 'Race 1'、'Race 2' 等。 一段时间后,日期递增。 .
我正在尝试创建一个如下所示的数据框:
每场比赛都有不同数量的参赛者。 pandas 有没有办法做到这一点? 谢谢
【问题讨论】:
标签: python-3.x pandas pandas-groupby transpose
我有以下 Python pandas 数据框: EventName 的数量比该日期显示的要多。 每个都有 Race_Number = 'Race 1'、'Race 2' 等。 一段时间后,日期递增。 .
我正在尝试创建一个如下所示的数据框:
每场比赛都有不同数量的参赛者。 pandas 有没有办法做到这一点? 谢谢
【问题讨论】:
标签: python-3.x pandas pandas-groupby transpose
我假设输出将是另一个 DataFrame。
import pandas as pd
import numpy as np
from nltk import flatten
import copy
df = pd.DataFrame({'EventName': ['sydney', 'sydney', 'sydney', 'sydney', 'sydney', 'sydney'],
'Date': ['2019-01.01', '2019-01.01', '2019-01.01', '2019-01.01', '2019-01.01', '2019-01.01'],
'Race_Number': ['Race1', 'Race1', 'Race1', 'Race2', 'Race2', 'Race3'],
'Number': [4, 7, 2, 9, 5, 10]
})
print(df)
dic={}
for rows in df.itertuples():
if rows.Race_Number in dic:
dic[rows.Race_Number] = flatten([dic[rows.Race_Number], rows.Number])
else:
dic[rows.Race_Number] = rows.Number
copy_dic = copy.deepcopy(dic)
seq = np.arange(0,len(dic.keys()))
for key, n_key in zip(copy_dic, seq):
dic[n_key] = dic.pop(key)
df = pd.DataFrame([dic])
print(df)
【讨论】: