6

Say I have two pandas dataframe like

data1 = [[s1, 0], [s2, 0], [s3, 1], [s4, 1], [s5, 0], [s6, 1], [s7, 0], [s8, 1]] 
df1 = pd.DataFrame(data1, columns = ['s_no', 'values']) 

data2 = [[s1, 0], [s2, 1], [s3, 1], [s4, 0], [s5, 0], [s6, 1], [s7, 1], [s8, 0]] 
df2 = pd.DataFrame(data2, columns = ['s_no2', 'values2']) 

How to find the value_counts of

df2['values2'].value_counts() when df1['values'] == 1 and 

df2['values2'].value_counts() when df1['values'] == 0

1 Answer 1

4

First is necessary same index values and size in both DataFrames, so possible join togehter, and then is possible use boolean indexing.

Advatage is possible check if correct aligned, if data for next processing are like you need.

df = pd.concat([df1, df2], axis=1)
print (df)
  s_no  values s_no2  values2
0   s1       0    s1        0
1   s2       0    s2        0
2   s3       1    s3        1
3   s4       1    s4        1
4   s5       0    s5        0
5   s6       1    s6        1
6   s7       0    s7        0
7   s8       1    s8        1

print (df.loc[df['values'] == 1, 'values2'].value_counts())
1    4
Name: values2, dtype: int64

print (df.loc[df['values'] == 0, 'values2'].value_counts())
0    4
Name: values2, dtype: int64

print (df.groupby('values')['values2'].value_counts())
values  values2
0       0          4
1       1          4
Name: values2, dtype: int64

Or is possible filter with df1, df2 - but here is not so easy checking, if something wrong with data:

print (df2.loc[df1['values'] == 1, 'values2'].value_counts())
1    4
Name: values2, dtype: int64

print (df2.loc[df1['values'] == 0, 'values2'].value_counts())
0    4
Name: values2, dtype: int64

print (df2['values2'].groupby(df1['values']).value_counts())
values  values2
0       0          4
1       1          4
Name: values2, dtype: int64
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.