【发布时间】:2019-02-02 10:31:46
【问题描述】:
【问题讨论】:
标签: python database pandas csv
【问题讨论】:
标签: python database pandas csv
您也可以使用 groupby 并使用 from_dict 创建一个新的数据框:
new_dict = (df.groupby('Name')
.apply(lambda x: list(map(lambda x: x, x['Value'])))
.to_dict())
new_df = pd.DataFrame.from_dict(new_dict, orient='index')
这会给你:
0 1 2
Ajay C529 C530 None
Djna A-506 A-507 A-508
Patc2 B-526 B-527 B-528
【讨论】:
IIUC 你需要df.pivot() 然后将值向左移动:
df_new=df.pivot(index='Name',columns='Value',values='Value')\
.apply(lambda x: pd.Series(x.dropna().values), axis=1).fillna(np.nan)
df_new.columns=['value_'+str(i+1) for i in df_new.columns]
print(df_new)
value_1 value_2 value_3 value_4 value_5 value_6 value_7 value_8 value_9 \
Name
Ajay C529 C530 C531 C532 C533 C534 C535 NaN NaN
Djna A-506 A-507 A-508 A-509 A-510 A-511 A-512 A-513 A-514
Patc2 B-526 B-527 B-528 NaN NaN NaN NaN NaN NaN
value_10
Name
Ajay NaN
Djna A-515
Patc2 NaN
【讨论】: