Как читать ключи в массив?

Это идеальная ситуация для метода join

Метод join построен именно для этих типов ситуаций. Вы можете присоединиться к любому числу DataFrames вместе с ним. Вызывающий DataFrame соединяется с индексом коллекции переданных DataFrames. Чтобы работать с несколькими DataFrames, вы должны поместить столбцы соединения в индекс.

Код будет выглядеть примерно так:

filenames = ['fn1', 'fn2', 'fn3', 'fn4',....]
dfs = [pd.read_csv(filename, index_col=index_col) for filename in filenames)]
dfs[0].join(dfs[1:])

С данными @ zero вы можете сделать это :

df1 = pd.DataFrame(np.array([
    ['a', 5, 9],
    ['b', 4, 61],
    ['c', 24, 9]]),
    columns=['name', 'attr11', 'attr12'])
df2 = pd.DataFrame(np.array([
    ['a', 5, 19],
    ['b', 14, 16],
    ['c', 4, 9]]),
    columns=['name', 'attr21', 'attr22'])
df3 = pd.DataFrame(np.array([
    ['a', 15, 49],
    ['b', 4, 36],
    ['c', 14, 9]]),
    columns=['name', 'attr31', 'attr32'])

dfs = [df1, df2, df3]
dfs = [df.set_index('name') for df in dfs]
dfs[0].join(dfs[1:])

     attr11 attr12 attr21 attr22 attr31 attr32
name                                          
a         5      9      5     19     15     49
b         4     61     14     16      4     36
c        24      9      4      9     14      9
0
задан David C 16 January 2019 в 16:49
поделиться

1 ответ

Разница между hiera_array() и обычным hiera() связана с тем, что происходит, когда запрашиваемый ключ (network::interfaces в вашем случае) присутствует на нескольких уровнях иерархии. Это очень мало связано с тем, в какой форме вы хотите получить данные, и не имеет ничего общего с выбором битов и кусков структур данных. hiera_array() запрашивает поиск «слияние массивов». Более современная lookup() функция именует это как «уникальную» стратегию слияния.

Кажется маловероятным, что поиск слияния массивов на самом деле то, что вы хотите. В этом случае проще всего прочитать весь хеш и извлечь ключи:

$network_interfaces = keys(hiera('network::interfaces'))

В Puppet 4 вам нужно будет использовать функцию keys(), предоставляемую модулем puppetlabs / stdlib. Начиная с Puppet 5 эта функция появляется в ядре Puppet.

0
ответ дан John Bollinger 16 January 2019 в 16:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: