将python csv数据重新排列为行和不同的列 我有csv dtabase,其中包含以下格式的名称和朋友列表
预期输出如下: 一行中的“名称和值”,以及根据名称重复的重复列数。
执行此输出的最佳方法是什么?
答案 0 :(得分:1)
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
答案 1 :(得分:1)
您也可以使用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