按列分组并从熊猫数据框中的其他列中选择特定值

时间:2021-05-21 08:57:16

标签: python pandas dataframe pandas-groupby

输入数据框

+-------------------------------+
|ID        Owns_car    owns_bike|
+-------------------------------+
| 1          1               0  |
| 5          1               0  |
| 7          0               1  |
| 1          1               0  |
| 4          1               0  |
| 5          0               1  |
| 7          0               1  |
+-------------------------------+


Expected Output: 
+------------------------------+
|ID       Owns_car    owns_bike|
+------------------------------+
| 1          1               0 |
| 5          1               1 |
| 7          0               1 |
| 4          1               0 |
+------------------------------+

按 ID 分组,然后为其他列选择值“1”而不是 0。检查给定 ID 的人是否拥有汽车和自行车

2 个答案:

答案 0 :(得分:2)

您可以在 groupby 之后使用 'max' 来选择最大值(1 大于 0)

telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
phoneStateListener = new PhoneStateListener() {
    @Override
    public void onCallStateChanged(int state, String phoneNumber) {

        switch (state){
            case TelephonyManager.CALL_STATE_OFFHOOK:
            case TelephonyManager.CALL_STATE_RINGING:
                if(mediaPlayer != null){
                    if(isPlaying()) {
                        pause();
                        showNotification(R.drawable.ic_play);
                        isCallOngoing = true;
                    }
                }
                break;

            case TelephonyManager.CALL_STATE_IDLE:
                if(mediaPlayer != null){
                    if(!isPlaying()) {
                        if(!sender.equals("system")) {
                            start();
                            showNotification(R.drawable.ic_pause);
                        }
                        isCallOngoing = false;
                    }
                }
                break;
        }

        super.onCallStateChanged(state, phoneNumber);
    }
};

telephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);

答案 1 :(得分:1)

transformmax 一起使用,然后通过 ID 删除重复项

df[['Owns_car', 'owns_bike']] = df.groupby('ID')[['Owns_car', 'owns_bike']].transform('max')

df = df.drop_duplicates('ID')