我有一个电子表格,看起来像以下(大约1800行),它是从python脚本中提取的,该python脚本从Access数据库中提取了信息:
ID Chemical Association Term
1 1,1-Dichloroethene exactMatch 1,1-Dichloroethylene
1 1,1-Dichloroethene exactMatch Vinylidene Chloride
2 1,2 Epoxyethane exactMatch Ethylene oxide
2 1,2 Epoxyethane exactMatch Ethylene oxide (1,2 Epoxyethane)
我想使用熊猫来更改此电子表格的布局。我想创建一个像这样的表:
ID Chemical Association Term (new column)
1 1,1-Dichloroethene exactMatch 1,1-Dichloroethylene Vinylidene Chloride
2 1,2 Epoxyethane exactMatch Ethylene oxide (1... Ethylene oxide
到目前为止,我已经使用熊猫编写了以下内容,但不确定下一步该怎么做:
data = pd.read_excel('Chemicals_exactMatch.xlsx', sheet_name='Sheet1')
df = pd.DataFrame(data)
grp = df.groupby(['ID','Chemical','Association'])
我认为以下语句需要纳入其中,但是我不确定如何:
df.apply(lambda grouped: grouped['Term'].str.cat(sep="|"))
df.str.split(pat="|")
答案 0 :(得分:1)
尝试一下:
df.set_index(['ID',
'Chemical',
'Association',
df.groupby(['ID','Chemical','Association']).cumcount()])['Term']\
.unstack().reset_index()
输出:
ID Chemical Association 0 1
0 1 1,1-Dichloroethene exactMatch 1,1-Dichloroethylene Vinylidene Chloride
1 2 1,2 Epoxyethane exactMatch Ethylene oxide Ethylene oxide (1,2 Epoxyethane)
答案 1 :(得分:0)
我设法写出了下面的作品:
data = pd.read_excel(spreadsheet, sheet_name='Sheet1')
df = (pd.DataFrame(data)
.groupby(['ID','Chemical','Association'])
.apply(lambda grouped: grouped['Term'].str.cat(sep="!"))
.str.split(pat="!", expand=True)
.sort_values('Chemical')
.to_excel('Chemicals_exactMatch.xlsx'))