Как я могу удалить «NaN», не удаляя данные?

, если ваша цель - пропустить свойства, которые не являются частью вашей сборки, просто проверьте свое имя сборки на тип отраженного свойства

 var properties= typeof(Sample).GetProperties();
        var myAssembly = Assembly.GetCallingAssembly().FullName;
        foreach(var prop in properties)
        {
            if (Assembly.GetAssembly(prop.PropertyType).FullName.Equals(myAssembly))
                Console.WriteLine(prop.Name);// this belongs to your assembly
        }
0
задан K. Minseok 21 January 2019 в 07:24
поделиться

4 ответа

Делает ли это то, что вам нужно?

def make_sample():
    test=np.full((8,12), np.nan)
    test[0,:6]=np.arange(6)
    test[1,6:]=np.arange(6,18,2)
    test[4:6,:]=2*test[:2,:]
    return test

test=make_sample()

In [74]: test
Out[74]: 
array([[ 0.,  1.,  2.,  3.,  4.,  5., nan, nan, nan, nan, nan, nan],
       [nan, nan, nan, nan, nan, nan,  6.,  8., 10., 12., 14., 16.],
       [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan],
       [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan],
       [ 0.,  2.,  4.,  6.,  8., 10., nan, nan, nan, nan, nan, nan],
       [nan, nan, nan, nan, nan, nan, 12., 16., 20., 24., 28., 32.],
       [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan],
       [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan]])

Создать массив, чтобы определить, какие строки НЕ являются всеми nans

filt=1^np.isnan(test).all(axis=1)

In [78]: filt
Out[78]: array([1, 1, 0, 0, 1, 1, 0, 0])

Использовать массив tat для сжатия теста в строки, которые all nans

compress=np.compress(filt, test, axis=0)

In [80]: compress
Out[80]: 
array([[ 0.,  1.,  2.,  3.,  4.,  5., nan, nan, nan, nan, nan, nan],
       [nan, nan, nan, nan, nan, nan,  6.,  8., 10., 12., 14., 16.],
       [ 0.,  2.,  4.,  6.,  8., 10., nan, nan, nan, nan, nan, nan],
       [nan, nan, nan, nan, nan, nan, 12., 16., 20., 24., 28., 32.]])

Установить наны на ноль

compress[np.isnan(compress)]=0

In [83]: compress
Out[83]: 
array([[ 0.,  1.,  2.,  3.,  4.,  5.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  6.,  8., 10., 12., 14., 16.],
       [ 0.,  2.,  4.,  6.,  8., 10.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0., 12., 16., 20., 24., 28., 32.]])

Добавить нечетные к четным строкам

In [84]: compress[::2,:]+compress[1::2,:]
Out[84]:  
array([[ 0.,  1.,  2.,  3.,  4.,  5.,  6.,  8., 10., 12., 14., 16.],
       [ 0.,  2.,  4.,  6.,  8., 10., 12., 16., 20., 24., 28., 32.]])
0
ответ дан Tls Chris 21 January 2019 в 07:24
поделиться

Ваше полное решение приведено ниже: убедитесь, что структура вашего информационного кадра правильная.

Сначала вы разбиваете столбцы данных на две части. В вашем случае 1-11, 12-21.

your_df=pd.read_csv(...)
columns1=list(range(12))
columns2=list(range(12,22))

df1=your_df[columns1].dropna()
df2=your_df[columns2].dropna().reset_index(drop=True)

df_new=pd.concat([df2,df3], axis=1)
0
ответ дан Fatih1923 21 January 2019 в 07:24
поделиться

Посмотрите на это. https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.dropna.html

df.dropna (args ..). Это то, что вы после.

0
ответ дан AussieOz 21 January 2019 в 07:24
поделиться

Если вы загрузили данные в фрейм данных с помощью Pandas, вы можете использовать df.dropna(), где df = pd.DataFrame(<your_data_here>)

Также вы можете передавать параметры, как показано ниже:

df.dropna(how='any')    #to drop if any value in the row has a nan
df.dropna(how='all')    #to drop if all values in the row are nan
0
ответ дан Jim Todd 21 January 2019 в 07:24
поделиться
Другие вопросы по тегам:

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