python - 基于另一个数据帧在 for 循环中创建数据帧
问题描述
我有一个数据框,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: object of type 'numpy.int32' has no len() ”。显然,这是不对的。
Soo,我怎样才能制作一个像columnName
and这样的数据框UniqueCounts
?
解决方案
要计算每列的唯一值,您可以在数据框上使用 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
推荐阅读
- javascript - 我的土地大小计算器应用程序的逻辑
- java - 查找元素的最简单方法是在 ENUM 中还是在 JAVA 中?
- jquery - 如何隐藏 DataTable 中的最后一个数字页?
- python - 无法将整个 JSON 文件导入 Google Colab
- pyspark - EMR 集群大小对于使用 spark 从 S3 读取数据是否重要
- javascript - 表单输入不接受空格
- git - Git合并策略什么是“解决”策略?
- jsf - 无法将真假值设置为布尔变量
- python - 如何删除“vctl config list platform.driver”中列出的特定配置文件?
- html - 窗口最小化时按钮的响应性失败,但兄弟的响应性不会失败