Python Pandas Реплицирует и обновляет строки DataFrame - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть DataFrame, который выглядит следующим образом:

raw_data = {
    'name': ['Name1', 'Name2'],
    'zone': ['zone1','zone2']}
df = pd.DataFrame(raw_data, columns = ['value','name','zone'])

print(df)

  value   name   zone
0   NaN  Name1  zone1
1   NaN  Name2  zone2

Мне нужно обновить DataFrame списком, чтобы каждая строка дублировалась с каждым значением из списка:

update_values = ['a1', 'a2']

# The desired dataframe looks like:

  value   name   zone
0   a1    Name1  zone1
1   a1    Name2  zone2
2   a2    Name1  zone1
3   a2    Name2  zone2   

Как я могу это сделать?

1 Ответ

0 голосов
/ 12 сентября 2018

Используйте concat с параметром keys - создайте MultiIndex, поэтому необходимо DataFrame.reset_index для столбца:

df = (pd.concat([df.drop('value', axis=1)] * len(update_values), keys=update_values)
        .reset_index(level=1, drop=True)
        .rename_axis('value')
        .reset_index())
print(df)
  value   name   zone
0    a1  Name1  zone1
1    a1  Name2  zone2
2    a2  Name1  zone1
3    a2  Name2  zone2

Или повторитезначения по numpy.tile:

update_values = ['a1', 'a2', 'a3']

df1 = pd.concat([df] * len(update_values), ignore_index=True)
df1['value'] = np.tile(update_values, len(df))
print(df1)
  value   name   zone
0    a1  Name1  zone1
1    a2  Name2  zone2
3    a3  Name1  zone1
4    a1  Name2  zone2
5    a2  Name1  zone1
6    a3  Name2  zone2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...