我有一个电子表格,看起来像以下(大约1800行),它是从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="|")

最佳答案

尝试这个:

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)

关于python - Pandas groupby for Excel电子表格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55265754/

10-12 22:26