列中的逗号分隔值与 pandas 中的行一样

San*_*der 7 dataframe python-3.x pandas

我在 pandas 中有一个数据框,如下所述,其中列中的元素info与列中的唯一文件相同id

id   text         info
1    great        boy,police
1    excellent    boy,police
2    nice         girl,mother,teacher
2    good         girl,mother,teacher
2    bad          girl,mother,teacher
3    awesome      grandmother
4    superb       grandson
Run Code Online (Sandbox Code Playgroud)

我只想将列表元素作为每个文件的行,例如:

id   text         info
1    great        boy
1    excellent    police
2    nice         girl
2    good         mother
2    bad          teacher
3    awesome      grandmother
4    superb       grandson
Run Code Online (Sandbox Code Playgroud)

Chr*_*ris 0

一种方法是使用pandas.DataFrame.groupby.transform.

请注意,这假设:

  1. 中的元素的长度与分割后info每个元素的成员数相同id','
  2. info相同 id 中的元素是相同的。

df["info"] = df.groupby("id")["info"].transform(lambda x: x.str.split(",").iloc[0])
print(df)
Run Code Online (Sandbox Code Playgroud)

输出:

   id       text         info
0   1      great          boy
1   1  excellent       police
2   2       nice         girl
3   2       good       mother
4   2        bad      teacher
5   3    awesome  grandmother
6   4     superb     grandson
Run Code Online (Sandbox Code Playgroud)