我有一个数据帧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()”。显然,这是不对的。
S,我如何制作像columnName
和UniqueCounts
这样的数据框?
答案 0 :(得分:1)
要计算每列的唯一值,可以在数据框中使用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
答案 1 :(得分:0)
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