计算多列中满足条件的行数
Calculate amount of rows satisfy condition in multiple columns
import pandas as pd
# initialize list of lists
data = [['tom', 'Y','Y','N'], ['nick', 'N','N','N'], ['juli', 'N','Y','N'],
['Luc', 'Y','Y','N'], ['Adg', 'Y','N','N'], ['Flav', 'N','Y','N'],
['Alf', 'Y','Y','N'], ['Jut', 'Y','N','N'], ['Uan', 'Y','Y','Y']]
# Create the pandas DataFrame
df = pd.DataFrame(data, columns = ['Name', 'Tipo_1', 'Tipo_2', 'Tipo_3'])
# print dataframe.
df
Name Tipo_1 Tipo_2 Tipo_3
0 tom Y Y N
1 nick N N N
2 juli N Y N
3 Luc Y Y N
4 Adg Y N N
5 Flav N Y N
6 Alf Y Y N
7 Jut Y N N
8 Uan Y Y Y
大家好。我想计算每个列组合中有多少行,而不是像这样写每个条件:
len(df[(df['Tipo_1'] == 'Y') & (df['Tipo_2'] == 'Y') & (df['Tipo_3'] == 'Y')])
len(df[(df['Tipo_1'] == 'N') & (df['Tipo_2'] == 'Y') & (df['Tipo_3'] == 'Y')])
len(df[(df['Tipo_1'] == 'Y') & (df['Tipo_2'] == 'N') & (df['Tipo_3'] == 'Y')])
len(df[(df['Tipo_1'] == 'Y') & (df['Tipo_2'] == 'Y') & (df['Tipo_3'] == 'N')])
...
并尝试将结果绘制成条形图。
谢谢!
按他们分组:
df = df.groupby(['Tipo_1', 'Tipo_2','Tipo_3']).count().reset_index()
print(df)
输出:
>>>
Tipo_1 Tipo_2 Tipo_3 Name
0 N N N 1
1 N Y N 2
2 Y N N 2
3 Y Y N 3
4 Y Y Y 1
使用value_counts
:
out = df.filter(like='Tipo').value_counts().rename('Count').reset_index()
print(out)
# Output
Tipo_1 Tipo_2 Tipo_3 Count
0 Y Y N 3
1 N Y N 2
2 Y N N 2
3 N N N 1
4 Y Y Y 1
import pandas as pd
# initialize list of lists
data = [['tom', 'Y','Y','N'], ['nick', 'N','N','N'], ['juli', 'N','Y','N'],
['Luc', 'Y','Y','N'], ['Adg', 'Y','N','N'], ['Flav', 'N','Y','N'],
['Alf', 'Y','Y','N'], ['Jut', 'Y','N','N'], ['Uan', 'Y','Y','Y']]
# Create the pandas DataFrame
df = pd.DataFrame(data, columns = ['Name', 'Tipo_1', 'Tipo_2', 'Tipo_3'])
# print dataframe.
df
Name Tipo_1 Tipo_2 Tipo_3
0 tom Y Y N
1 nick N N N
2 juli N Y N
3 Luc Y Y N
4 Adg Y N N
5 Flav N Y N
6 Alf Y Y N
7 Jut Y N N
8 Uan Y Y Y
大家好。我想计算每个列组合中有多少行,而不是像这样写每个条件:
len(df[(df['Tipo_1'] == 'Y') & (df['Tipo_2'] == 'Y') & (df['Tipo_3'] == 'Y')])
len(df[(df['Tipo_1'] == 'N') & (df['Tipo_2'] == 'Y') & (df['Tipo_3'] == 'Y')])
len(df[(df['Tipo_1'] == 'Y') & (df['Tipo_2'] == 'N') & (df['Tipo_3'] == 'Y')])
len(df[(df['Tipo_1'] == 'Y') & (df['Tipo_2'] == 'Y') & (df['Tipo_3'] == 'N')])
...
并尝试将结果绘制成条形图。
谢谢!
按他们分组:
df = df.groupby(['Tipo_1', 'Tipo_2','Tipo_3']).count().reset_index()
print(df)
输出:
>>>
Tipo_1 Tipo_2 Tipo_3 Name
0 N N N 1
1 N Y N 2
2 Y N N 2
3 Y Y N 3
4 Y Y Y 1
使用value_counts
:
out = df.filter(like='Tipo').value_counts().rename('Count').reset_index()
print(out)
# Output
Tipo_1 Tipo_2 Tipo_3 Count
0 Y Y N 3
1 N Y N 2
2 Y N N 2
3 N N N 1
4 Y Y Y 1