所以我有一个数据框,其中有相同的ID包含多个自定义字段。我找到了this question,但这并不是我想要的。用于在
下创建所需起始数据框的代码df = pd.DataFrame()
df['ID'] = [np.random.randint(1,2000) for x in range(0,1000)]
new = pd.DataFrame()
for x in range(0,10):
new = new.append(df)
new = new.sort_values('ID').reset_index(drop=True)
new['Custom Field'] = [np.random.randint(1,20) for x in new['ID']]
new['Value'] = [np.random.randint(0,10000000) for x in new['ID']]
new = new.groupby(['ID','Custom Field']).first().reset_index()
new = new.sort_values(['ID','Custom Field']).reset_index(drop=True)
new.head()
此图像显示它正在获取自定义字段表中的值并将它们转换为单独的列。对于每个ID,自定义字段表中最多可包含20个值。我需要将每个自定义字段值(1-20)放在它们自己的列中。如果某个ID没有该值,则该值为空。我想尽可能具体,但很难解释。如果我需要编辑问题以提供更多详细信息,请与我们联系。
答案 0 :(得分:2)
使用带有添加前缀的枢轴,即
df.pivot('ID','Custom_Field','Value').add_prefix('CF')
Custom_Field CF1 CF2 CF3 CF7 CF8 \ ID 1 NaN 5643962.0 6959658.0 4310939.0 5796051.0 2 1121049.0 6044077.0 NaN NaN NaN Custom_Field CF9 CF12 CF13 CF15 CF16 CF19 ID 1 1198701.0 NaN 2925189.0 8438978.0 1730570.0 3481493.0 2 4483108.0 3327149.0 NaN 2700632.0 NaN 3249005.0