Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何显示行中具有不同值的列?_Python_Pandas - Fatal编程技术网

Python 如何显示行中具有不同值的列?

Python 如何显示行中具有不同值的列?,python,pandas,Python,Pandas,我有两行数据框: +---------+---------+-----------+------------+ | ID| Type| Index| Code| +---------+---------+-----------+------------+ |111111111| aa| 1| XXX| |111111111| aa| null| XXX| 如何显示那

我有两行数据框:

+---------+---------+-----------+------------+
|       ID|     Type|      Index|        Code|
+---------+---------+-----------+------------+
|111111111|       aa|          1|         XXX|
|111111111|       aa|       null|         XXX|
如何显示那些在
df
行之间具有不同值的列?(可能有两行以上)


在上面显示的示例中,预期的输出是
索引
,因为第一行的
索引
等于1,而第二行的
索引
等于null。

我想您可以通过迭代所有列来计算单个列中的不同值

如何计算不同的值

您可以使用以下代码:

for col in df.columns:
   if len(df[col].value_counts()) > 1:
      print('The column ' +  col + ' has different values')

循环遍历pandas.DataFrame.columns,检查两行的每列值是否相同

import pandas as pd
data=[
    [111111111,'aa',1,'XXX'],
    [111111111,'aa','null','XXX'],
    [111111111,'aa','null','YYY']
]
df=pd.DataFrame(data, columns=["ID", "Type", "Index", "Code"])

def get_different_columns(r1, r2):
    different_col_list=[]
    for column in df.columns:
        if df.iloc[r1][column] != df.iloc[r2][column]:
            different_col_list.append(column)
    return different_col_list

print(get_different_columns(0,1))
#['Index']

print(get_different_columns(1,2))
#['Code']

print(get_different_columns(0,2))
#['Index', 'Code']

您只需选择列的唯一值大于1的列(或数据帧)。您可以获得那些值与不同的列

def cols_having_unique(df):
    my_cols = []
    for col in df.columns:
        if df[col].nunique(dropna=False) > 1:
            my_cols.append(col)
    return df[my_cols].copy()

new_df = cols_having_unique(df)

您正在寻找
nunique
df.columns[df.nunique(axis=0,dropna=False).gt(1)]
您是否正在尝试比较每一行的值?还是仅连续行?你是否声称每一行都应该有相同的列值(除了例外)?@cs95:在
df
中的所有现有行中。那么,你能确认
df.columns[df.nunique(axis=0,dropna=False).gt(1)]
是你想要的吗?或者你可能想按照rafaelc提到的ID来做这件事。如果这是重复的,请投票以重复的方式结束,或者留下评论。不要做出只链接到副本的答案。