Повторяющиеся строки в соответствии со значением в столбце - PullRequest
0 голосов
/ 11 июня 2018

Я хочу прочитать файл Excel и хочу, чтобы мой код дублировал строки в соответствии со значением в одном из столбцов в этом файле Excel.

Например,

    Col 1  Col 2
0   Adam      3
1  Sarah      2
2   John      0

Я хочу, чтобы мойКод прочитайте выше файл и скопируйте строку Адама 3 раза и строку Сары 2 раза и экспортируйте в новый файл.

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

другой способ решить эту проблему,

pd.merge(pd.DataFrame(df['Col 1'].repeat(df['Col 2'])),df,on=['Col 1'])
0 голосов
/ 11 июня 2018

Используйте repeat с loc, если это не так RangeIndex:

print (df.index.repeat(df['Col 2']))
Int64Index([0, 0, 0, 1, 1], dtype='int64')

df = df.loc[df.index.repeat(df['Col 2'])].reset_index(drop=True)
print (df)
   Col 1  Col 2
0   Adam      3
1   Adam      3
2   Adam      3
3  Sarah      2
4  Sarah      2

А затем:

df.to_csv(file, index=False)

Общее решение для дублированного индекса или DatetimeIndex - это повторяющийся массив с numy, созданный numpy.arange и выбранный по позициям с помощью iloc:

df = df.iloc[np.arange(len(df)).repeat(df['Col 2'])].reset_index(drop=True)

РЕДАКТИРОВАТЬ:

Решение без np.repeat:

df =df.loc[[c for a, b in zip(df.index, df['Col 2']) for c in [a] * b]].reset_index(drop=True)
print (df)
   Col 1  Col 2
0   Adam      3
1   Adam      3
2   Adam      3
3  Sarah      2
4  Sarah      2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...