如何按列计算唯一值

时间:2021-02-19 01:32:23

标签: python-3.x pandas dataframe

我有一个包含三列的数据框,如下所示:

column1     column2    column3
   1           2          3
   2           1          3
   3           1          2
   2           3          1

我想计算每列中有多少个 1。预期的输出是这样的:

column1: 1
column2: 2
column3: 1

4 个答案:

答案 0 :(得分:1)

my_dict = {}
for c in df.columns:
    v = df[df[c]==1][c].sum()
    my_dict[c]=v

结果:my_dict

{'column1': 1, 'column2': 2, 'column3': 1}

答案 1 :(得分:0)

请尝试查询 df 中等于 1 的值。这将返回一个 df 布尔值。然后在轴上求和=0:

# Define files I want to merge

filenames = ['markdown/simple1.md', 'markdown/simple2.md', 'markdown/simple3.md']

# Merge markdown files into one big file

merged_filecontent = ""
file = ""

for file in filenames:
  file = open(file).read()
  file += "\n"
  # print(file)
  merged_filecontent += file
  
# Call variable outside of for loop

print(merged_filecontent)

答案 2 :(得分:0)

您可以将 lambda 应用于特定列,然后按如下方式对所有 True 结果求和:

df = pd.DataFrame({'col1': [1,2,3,2], 'col2': [2,1,1,3]})

count_of_ones = df['col1'].apply(lambda x: x ==1).sum(0)
print(count_of_ones) #prints 1

count_of_ones = df['col2'].apply(lambda x: x ==1).sum(0)
print(count_of_ones) #prints 2

答案 3 :(得分:0)

让我们试试count

df.mask(df==1).count()
Out[85]: 
column1    3
column2    2
column3    3
dtype: int64