Issue
I have two df frames
df = pd.DataFrame({'1': [0, 0, 0, 0, 0, 0],
'2': [0, 0, 0, 0, 0, 0],
'3': [0, 10, 20, 30, 40, 50]})
df2 = pd.DataFrame({'1': [53, 76, 77, 96, 58, 64],
'2': [42, 61, 65, 74, 45, 54],
'3': [36, 42, 24, 54, 10, 80],})
What I am looking for is a new column in df
which states how many times that row has values from df2 in a row which are >= to each number.
Hope I’ve explained it well enough thanks
df = pd.DataFrame({'1': {0: 62, 1: 35, 2: 80, 3: 78, 4: 80, 5: 60, 6: 67, 7: 65, 8: 55, 9: 62},
'2': {0: 52, 1: 28, 2: 43, 3: 57, 4: 60, 5: 37, 6: 32, 7: 23, 8: 33, 9: 38},
'3': {0: 32, 1: 8, 2: 12, 3: 30, 4: 38, 5: 18, 6: 10, 7: 10, 8: 13, 9: 25},
'4': {0: 43, 1: 23, 2: 50, 3: 47, 4: 50, 5: 37, 6: 35, 7: 42, 8: 28, 9: 32},
'5': {0: 62, 1: 45, 2: 55, 3: 75, 4: 62, 5: 63, 6: 43, 7: 58, 8: 55, 9: 72},
'6': {0: 80, 1: 50, 2: 83, 3: 63, 4: 73, 5: 52, 6: 62, 7: 75, 8: 72, 9: 72},
'7': {0: 2, 1: 1, 2: 2, 3: 3, 4: 0, 5: 0, 6: 0, 7: 1, 8: 0, 9: 0}})
df2 = pd.DataFrame({'1': {0: 0, 1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0, 8: 0, 9: 0},
'2': {0: 0, 1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0, 8: 0, 9: 0},
'3': {0: 0, 1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6:0, 7: 0, 8: 0, 9: 0},
'4': {0: 0, 1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0, 8: 0, 9: 0},
'5': {0: 0, 1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0, 8: 0, 9: 0},
'6': {0: 0, 1: 10, 2: 20, 3: 30, 4: 40, 5: 50, 6: 60, 7: 70, 8: 80, 9: 90},
'7': {0: 1, 1: 1, 2: 1, 3: 1, 4: 1, 5: 1, 6: 1, 7: 1, 8: 1, 9: 1}})
Solution
Try with apply
:
df["count"] = df.apply(lambda row: row.ge(df2).all(1).sum(), axis=1)
>>> df
1 2 3 4 5 6 7 count
0 62 52 32 43 62 80 2 9
1 35 28 8 23 45 50 1 6
2 80 43 12 50 55 83 2 9
3 78 57 30 47 75 63 3 7
4 80 60 38 50 62 73 0 0
5 60 37 18 37 63 52 0 0
6 67 32 10 35 43 62 0 0
7 65 23 10 42 58 75 1 8
8 55 33 13 28 55 72 0 0
9 62 38 25 32 72 72 0 0
Answered By - not_speshal
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.