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来做这件事。如果这是重复的,请投票以重复的方式结束,或者留下评论。不要做出只链接到副本的答案。