熊猫如果功能或组合

时间:2017-07-07 17:56:10

标签: python pandas

熊猫新手。我有这个代码最初编写为.csv,现在我写的是读取.xlsx文件。无论如何,我之前使用 if 函数来读取Valid Part =='YES'然后.....关注其余的代码。

现在我正在使用Pandas我一直在测试groupby以实现我的计数,但还没有完全弄明白。

我正在查看此示例中的有效部分=='是'和Appl Req =='是'给我计数。

非常感谢任何建议。

import pandas as pd

df = pd.read_excel('IMPORT.xlsx')

app_req = df.groupby(['Valid Part', 'Appl Req']).count()

print(app_req)

数据样本

enter image description here

1 个答案:

答案 0 :(得分:1)

我认为您需要先按boolean indexingquery进行过滤,然后按size进行汇总:

df = df[(df['Valid Part'] == 'Yes') & (df['Appl Req'] == 'Yes')]
app_req = df.groupby(['Valid Part', 'Appl Req']).size()

What is the difference between size and count in pandas?

编辑:

<强>示例

np.random.seed(100)
N = 10
df = pd.DataFrame(np.random.choice(['Yes','No'], size=(N,3)), 
                  columns=['Valid Part', 'Appl Req', 'A'])
print (df)
   Valid Part Appl Req    A
0         Yes      Yes   No
1          No       No   No
2         Yes      Yes  Yes
3         Yes      Yes   No
4         Yes      Yes  Yes
5         Yes       No  Yes
6         Yes       No  Yes
7          No      Yes  Yes
8         Yes       No   No
9          No      Yes  Yes

您似乎只需要True值的总和:

print ((df['Valid Part'] == 'Yes') & (df['Appl Req'] == 'Yes'))
0     True
1    False
2     True
3     True
4     True
5    False
6    False
7    False
8    False
9    False
dtype: bool

app_req = ((df['Valid Part'] == 'Yes') & (df['Appl Req'] == 'Yes')).sum()
print (app_req)
4
df = df[(df['Valid Part'] == 'Yes') & (df['Appl Req'] == 'Yes')]
app_req = df.groupby(['Valid Part', 'Appl Req']).size().reset_index(name='COUNT')
print (app_req)
  Valid Part Appl Req  COUNT
0        Yes      Yes      4