У меня есть pandas.DataFrame с ZIPCODES в двух столбцах. Я просто хочу подсчитать появление всех ZIPCODES с помощью value_counts (). Но мне все равно, в каком они столбце. Мне нужен результат ...

2
buhtz 8 Июл 2021 в 15:40

4 ответа

Лучший ответ

Сначала stack фрейм данных, чтобы иметь значения всех столбцов в одном столбце, затем вызовите value_counts(), если необходимо, вызовите to_frame() и передайте новое имя столбца, т. Е. ZIPCODE_N

>>> df.stack().value_counts().to_frame("ZIPCODE_N")

       ZIPCODE_N
10000          3
20000          3
30000          2
50000          1
40000          1

2
ThePyGuy 8 Июл 2021 в 12:44

Вы можете просто pandas.concat обязательные столбцы, а затем используйте .value_counts, то есть

import pandas as pd
df = pd.DataFrame({'ZIPCODE_A': [10000, 20000, 20000, 10000, 30000], 'ZIPCODE_B': [40000, 30000, 20000, 50000, 10000]})
together = pd.concat([df.ZIPCODE_A,df.ZIPCODE_B])
print(together.value_counts())

Выход

20000    3
10000    3
30000    2
50000    1
40000    1
dtype: int64
0
Daweo 8 Июл 2021 в 12:50

melt в столбцах почтового индекса и затем используйте value_counts один раз:

df.melt(value_vars=["ZIPCODE_A", "ZIPCODE_B"])["value"].value_counts()

# 10000    3
# 20000    3
# 30000    2
# 40000    1
# 50000    1
# Name: value, dtype: int64
1
Alex 8 Июл 2021 в 12:44

Ты можешь сделать:

df.unstack().value_counts()
Out[4]: 
20000    3
10000    3
30000    2
50000    1
40000    1
dtype: int64
1
Suhas Mucherla 8 Июл 2021 в 12:44