Дублирование строк DataFrame на основе значений столбцов в каждой ячейке - PullRequest
0 голосов
/ 20 марта 2020

У меня есть Dataframe, как показано ниже. Я должен дублировать строки, используя запятую в качестве разделителя. Это легче понять, когда вы увидите кадры данных ниже!:

ID      Fruit
10000   Apple, Orange, Pear
10001   Apple, Banana

Я хочу использовать кадры данных ниже:

ID      Fruit
10000   Apple 
10000   Orange
10000   Pear
10001   Apple 
10001   Banana

Ответы [ 2 ]

0 голосов
/ 20 марта 2020

Попробуйте:

df['Fruit']=df['Fruit'].str.split(", ")
df=df.explode('Fruit')

Выходы:

      ID   Fruit
0  10000   Apple
0  10000  Orange
0  10000    Pear
1  10001   Apple
1  10001  Banana
0 голосов
/ 20 марта 2020

Если df выглядит следующим образом:

>>> df = pd.DataFrame({'ID': [10000, 10001], 'Fruit': ['Apple, Orange, Pear', 'Apple, Banana']})
>>> print(df)
      ID                Fruit
0  10000  Apple, Orange, Pear
1  10001        Apple, Banana

, вы можете использовать метод pandas.DataFrame.apply(), чтобы создать новый столбец списков, состоящий из словарей с новыми строками. И после этого вы можете объединить эти списки, чтобы сделать из них новый фрейм данных. Код следующий:

>>> df['new'] = df.apply(lambda row: [{'ID': row.ID, 'Fruit': item} for item in row.Fruit.split(', ')], axis=1)
>>> df_new = pd.DataFrame(df.new.sum())
>>> print(df_new)
      ID   Fruit
0  10000   Apple
1  10000  Orange
2  10000    Pear
3  10001   Apple
4  10001  Banana
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...