Чтение только числовых значений из одного кадра данных и создание другого кадра данных из этих значений - PullRequest
1 голос
/ 13 марта 2019

Я импортировал Excel в dataframe, и это выглядит так:

rule_id  reqid1 reqid2  reqid3
50014     1.0    0.0     1.0
50238     0.0    1.0     0.0
50239     0.0    1.0     0.0
50356     0.0    0.0     1.0
50412     0.0    0.0     1.0
51181     0.0    1.0     0.0
53139     0.0    0.0     1.0

Затем я написал этот код, чтобы сравнить соответствующие запросы друг с другом, а затем отбросил столбцы reqid:

    m = df1.eq(df1.shift(-1, axis=1))

    arr1 = np.select([df1 ==0, m], [np.nan, 1], 1*100)

    dft4 = pd.DataFrame(arr1, index=df1.index).rename(columns=lambda x: 'comp{}'.format(x+1))

    dft5 = df1.join(dft4)
    cols = [c for c in dft5.columns if 'reqid' in c]
    df8 = dft5.drop(cols, axis=1)

Результат выглядел так:

enter image description here

Затем я перенес его, и данные выглядят так:

enter image description here

Теперь я хочу записать эти данные в отдельный фрейм данных, где присутствуют только числовые значения и удаляются пустые или нулевые значения. Фрейм данных должен выглядеть следующим образом:

enter image description here

Если бы кто-нибудь мог мне помочь, я был бы очень признателен.

1 Ответ

2 голосов
/ 13 марта 2019

Используйте функцию justify и затем удаляйте только строки NaN s с помощью DataFrame.dropna с параметром how='all':

df8 = dft5.drop(cols, axis=1).T

df8 = pd.DataFrame(justify(df8.values,
                   invalid_val=np.nan,
                   axis=0,side='up'), columns=df8.columns).dropna(how='all')
print (df8)
rule_id  50014  50238  50239  50356  50412  51181  53139
0        100.0  100.0  100.0  100.0  100.0  100.0  100.0
1        100.0    NaN    NaN    NaN    NaN    NaN    NaN

Другое решение для панд:

df8 = df8.apply(lambda x: pd.Series(x.dropna().values))
print (df8)

rule_id  50014  50238  50239  50356  50412  51181  53139
0        100.0  100.0  100.0  100.0  100.0  100.0  100.0
1        100.0    NaN    NaN    NaN    NaN    NaN    NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...