Python панды показывают повторные значения

После ввода нескольких источников у меня есть решение, которое работает хорошо. Это было связано с написанием собственного кода замены.

Ответ .

Fiddle .

function replaceURLWithHTMLLinks(text) {
    var re = /(\(.*?)?\b((?:https?|ftp|file):\/\/[-a-z0-9+&@#\/%?=~_()|!:,.;]*[-a-z0-9+&@#\/%=~_()|])/ig;
    return text.replace(re, function(match, lParens, url) {
        var rParens = '';
        lParens = lParens || '';

        // Try to strip the same number of right parens from url
        // as there are left parens.  Here, lParenCounter must be
        // a RegExp object.  You cannot use a literal
        //     while (/\(/g.exec(lParens)) { ... }
        // because an object is needed to store the lastIndex state.
        var lParenCounter = /\(/g;
        while (lParenCounter.exec(lParens)) {
            var m;
            // We want m[1] to be greedy, unless a period precedes the
            // right parenthesis.  These tests cannot be simplified as
            //     /(.*)(\.?\).*)/.exec(url)
            // because if (.*) is greedy then \.? never gets a chance.
            if (m = /(.*)(\.\).*)/.exec(url) ||
                    /(.*)(\).*)/.exec(url)) {
                url = m[1];
                rParens = m[2] + rParens;
            }
        }
        return lParens + "" + url + "" + rParens;
    });
}

1
задан erdemgunenc 18 January 2019 в 08:23
поделиться

2 ответа

Вы получаете MultiIndex, поэтому значения первого уровня отображаются не только.

Можно преобразовать MultiIndex в столбцы с помощью reset_index :

df = df.reset_index()

Или указать каждый столбец в именах параметров, чтобы избежать MultiIndex:

df = pd.read_csv('samplefile.txt', sep='\t', names = ["one","two","next", "234", "235", "236"]
0
ответ дан jezrael 18 January 2019 в 08:23
поделиться

Слово предупреждения с MultiIndex, поскольку я был укушен этим вчера и потратил впустую время, пытаясь решить проблему несуществующей проблемы.

Если один из ваших уровней индекса имеет тип float64, то вы можете обнаружить, что индексы не показаны полностью. У меня был кадр данных, которым я был df.groupby().describe(), а переменная, для которой я выполнял groupby(), изначально была длинной int, в какой-то момент она была преобразована в float, и при распечатке этот индекс был округлен. Было несколько значений, очень близких друг к другу, и поэтому появилось при печати, что groupby() обнаружило несколько уровней второго индекса.

Это не очень понятно, поэтому вот иллюстративный пример ...

import numpy as np
import pandas as pd

index = np.random.uniform(low=89908893132829,
                          high=89908893132929,
                          size=(50,))
df = pd.DataFrame({'obs': np.arange(100)},
                  index=np.append(index, index)).sort_index()
df.index.name = 'index1'
df['index2'] = [1, 2] * 50
df.reset_index(inplace=True)
df.set_index(['index1', 'index2'], inplace=True)

Посмотрите на фрейм данных, и кажется, что существует только один уровень индекса1 ...

df.head(10)
                     obs
index1       index2     
8.990889e+13 1         4
             2        54
             1        61
             2        11
             1        89
             2        39
             1        65
             2        15
             1        60
             2        10

groupby(['index1', 'index2']).describe() и выглядит , как будто существует только один уровень index1 ...

summary = df.groupby(['index1', 'index2']).describe()
summary.head()
                      obs                                        
                    count  mean std   min   25%   50%   75%   max
index1       index2                                              
8.990889e+13 1        1.0   4.0 NaN   4.0   4.0   4.0   4.0   4.0
             2        1.0  54.0 NaN  54.0  54.0  54.0  54.0  54.0
             1        1.0  61.0 NaN  61.0  61.0  61.0  61.0  61.0
             2        1.0  11.0 NaN  11.0  11.0  11.0  11.0  11.0
             1        1.0  89.0 NaN  89.0  89.0  89.0  89.0  89.0

Но если вы посмотрите на фактические значения index1 в любом из них, вы увидите, что существует несколько уникальных значений. В исходном фрейме данных ...

df.index.get_level_values('index1')

Float64Index([89908893132833.12, 89908893132833.12, 89908893132834.08,
              89908893132834.08, 89908893132835.05, 89908893132835.05,
               89908893132836.3,  89908893132836.3, 89908893132837.95,
              89908893132837.95,  89908893132838.1,  89908893132838.1,
               89908893132838.6,  89908893132838.6, 89908893132841.89,
              89908893132841.89, 89908893132841.95, 89908893132841.95,
              89908893132845.81, 89908893132845.81, 89908893132845.83,
              89908893132845.83, 89908893132845.88, 89908893132845.88,
              89908893132846.02, 89908893132846.02,  89908893132847.2,
               89908893132847.2, 89908893132847.67, 89908893132847.67,
               89908893132848.5,  89908893132848.5,  89908893132848.5,
               89908893132848.5, 89908893132855.17, 89908893132855.17,
              89908893132855.45, 89908893132855.45, 89908893132864.62,
              89908893132864.62, 89908893132868.61, 89908893132868.61,
              89908893132873.16, 89908893132873.16,  89908893132875.6,
               89908893132875.6, 89908893132875.83, 89908893132875.83,
              89908893132878.73, 89908893132878.73,  89908893132879.9,
               89908893132879.9, 89908893132880.67, 89908893132880.67,
              89908893132880.69, 89908893132880.69, 89908893132881.31,
              89908893132881.31, 89908893132881.69, 89908893132881.69,
              89908893132884.45, 89908893132884.45, 89908893132887.27,
              89908893132887.27, 89908893132887.83, 89908893132887.83,
               89908893132892.8,  89908893132892.8, 89908893132894.34,
              89908893132894.34,  89908893132894.5,  89908893132894.5,
              89908893132901.88, 89908893132901.88, 89908893132903.27,
              89908893132903.27, 89908893132904.53, 89908893132904.53,
              89908893132909.27, 89908893132909.27, 89908893132910.38,
              89908893132910.38, 89908893132911.86, 89908893132911.86,
               89908893132913.4,  89908893132913.4, 89908893132915.73,
              89908893132915.73, 89908893132916.06, 89908893132916.06,
              89908893132922.48, 89908893132922.48, 89908893132923.44,
              89908893132923.44, 89908893132924.66, 89908893132924.66,
              89908893132925.14, 89908893132925.14, 89908893132928.28,
              89908893132928.28],
             dtype='float64', name='index1')

... и в обобщенном фрейме данных ...

summary.index.get_level_values('index1')

Float64Index([89908893132833.12, 89908893132833.12, 89908893132834.08,
              89908893132834.08, 89908893132835.05, 89908893132835.05,
               89908893132836.3,  89908893132836.3, 89908893132837.95,
              89908893132837.95,  89908893132838.1,  89908893132838.1,
               89908893132838.6,  89908893132838.6, 89908893132841.89,
              89908893132841.89, 89908893132841.95, 89908893132841.95,
              89908893132845.81, 89908893132845.81, 89908893132845.83,
              89908893132845.83, 89908893132845.88, 89908893132845.88,
              89908893132846.02, 89908893132846.02,  89908893132847.2,
               89908893132847.2, 89908893132847.67, 89908893132847.67,
               89908893132848.5,  89908893132848.5, 89908893132855.17,
              89908893132855.17, 89908893132855.45, 89908893132855.45,
              89908893132864.62, 89908893132864.62, 89908893132868.61,
              89908893132868.61, 89908893132873.16, 89908893132873.16,
               89908893132875.6,  89908893132875.6, 89908893132875.83,
              89908893132875.83, 89908893132878.73, 89908893132878.73,
               89908893132879.9,  89908893132879.9, 89908893132880.67,
              89908893132880.67, 89908893132880.69, 89908893132880.69,
              89908893132881.31, 89908893132881.31, 89908893132881.69,
              89908893132881.69, 89908893132884.45, 89908893132884.45,
              89908893132887.27, 89908893132887.27, 89908893132887.83,
              89908893132887.83,  89908893132892.8,  89908893132892.8,
              89908893132894.34, 89908893132894.34,  89908893132894.5,
               89908893132894.5, 89908893132901.88, 89908893132901.88,
              89908893132903.27, 89908893132903.27, 89908893132904.53,
              89908893132904.53, 89908893132909.27, 89908893132909.27,
              89908893132910.38, 89908893132910.38, 89908893132911.86,
              89908893132911.86,  89908893132913.4,  89908893132913.4,
              89908893132915.73, 89908893132915.73, 89908893132916.06,
              89908893132916.06, 89908893132922.48, 89908893132922.48,
              89908893132923.44, 89908893132923.44, 89908893132924.66,
              89908893132924.66, 89908893132925.14, 89908893132925.14,
              89908893132928.28, 89908893132928.28],
             dtype='float64', name='index1')

Я потратил время на то, чтобы почесать голову, удивляясь, почему мой groupby([ index1 , index2 ) дал только один уровень index1!

0
ответ дан slackline 18 January 2019 в 08:23
поделиться
Другие вопросы по тегам:

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