Создание фрейма данных в цикле for на основе другого фрейма данных - PullRequest
0 голосов
/ 07 марта 2019

У меня есть фрейм данных, df, и я хотел бы получить все столбцы в нем и количество уникальных значений в нем и сохранить его как другой фрейм данных.Я не могу найти способ сделать это.Я могу , однако печатаю то, что я хочу на консоли.Вот что я имею в виду:

def counting_unique_values_in_df(df):
    for evry_colm in df:
        print (evry_colm, "-", df[evry_colm].value_counts().count())

Теперь это прекрасно печатает то, что я хочу.Вместо печати, если я делаю что-то вроде newdf = pd.DataFrame(evry_colm, df[evry_colm].value_counts().count(), columns = ('a', 'b')), выдается сообщение об ошибке « TypeError: объект типа 'numpy.int32' не имеет len () ".Очевидно, что это не так.

Так, как я могу создать фрейм данных, такой как columnName и UniqueCounts?

Ответы [ 2 ]

1 голос
/ 07 марта 2019

Для подсчета уникальных значений на столбец вы можете использовать функции apply и nunique для фрейма данных.Что-то вроде:

import pandas as pd

df = pd.DataFrame([
       {'a': 1, 'b': 2}, 
       {'a': 2, 'b': 2}
     ])

count_series = df.apply(lambda col: col.nunique())

#   returned object is pandas Series 
#   a    2
#   b    1
#   to map it to DataFrame try

pd.DataFrame(count_series).T
0 голосов
/ 07 марта 2019
import pandas as pd
df = pd.DataFrame({'A': [1, 1, 2, 2], 'B': [1, 2, 3, 4]})
print(df)
print()
df = pd.DataFrame({col: [df[col].nunique()] for col in df})
print(df)

Выход:

   A  B
0  1  1
1  1  2
2  2  3
3  2  4

   A  B
0  2  4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...