简体   繁体   English

如何根据熊猫中的某些条件将df1中的一行与df2中的其他行进行比较?

[英]How to compare one row from df1 from other rows from df2 based on some condition in pandas?

I have two files(some rows could be same and some could be different) which have data like this- 我有两个文件(有些行可能相同,有些行可能不同),它们的数据如下:

PID,          STARTED,%CPU,%MEM,COMMAND
1,Wed Sep 12 10:10:21 2018, 0.0, 0.0,init
2,Wed Sep 12 10:10:21 2018, 0.0, 0.0,kthreadd

Now, I want to perform following operations on these dataframes- 现在,我要对这些数据框执行以下操作-

  1. select one row(say R1) from df1 从df1中选择一行(例如R1)
  2. iterate all the rows from df2 and check for mathces with R1. 迭代df2中的所有行,并使用R1检查数学。
  3. if it found matches then store it in a seperate dataframe, if it doesn't match ignore it. 如果找到匹配项,则将其存储在单独的数据帧中;如果不匹配,则将其忽略。

Since file has 10000 rows. 由于文件有10000行。 so I am implementing it via python pandas but not getting the proper way. 所以我正在通过python pandas实现它,但是没有正确的方法。 Any help would be appreciable. 任何帮助将是可观的。

Raw data 原始数据

First dataframe: 第一个数据框:

df = pd.DataFrame({
    'Started': [*np.repeat(pd.Timestamp(2018, 9, 12, 12, 12, 21), 2)],
    '%CPI': [0.0, 0.0],
    '%MEM': [0.0, 0.0],
    'COMMAND': ['init', 'kthreadd']
})

Output: 输出:

    Started %CPI    %MEM    COMMAND
0   2018-09-12 12:12:21 0.0 0.0 init
1   2018-09-12 12:12:21 0.0 0.0 kthreadd

Second dataframe: 第二个数据框:

df2 = pd.DataFrame({
    'Started': [pd.Timestamp(2018, 9, 12, 12, 12, 21), pd.Timestamp(2020, 9, 12, 12, 12, 21)],
    '%CPI': [0.0, 1.0],
    '%MEM': [0.0, 1.0],
    'COMMAND': ['init', 'different']
})

Output (row 0 the same, row 1 different): 输出(行0相同,行1不同):

    Started %CPI    %MEM    COMMAND
0   2018-09-12 12:12:21 0.0 0.0 init
1   2020-09-12 12:12:21 1.0 1.0 different

Answer 回答

Create new dataframe with only matching rows: 创建仅包含匹配行的新数据框:

columns = df.columns.tolist()

matches = pd.merge(df, df2, left_on=columns, right_on=columns)

Output: 输出:

    Started %CPI    %MEM    COMMAND
0   2018-09-12 12:12:21 0.0 0.0 init

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 python中的Pandas数据框:根据df2中的行从df1中删除行 - Pandas dataframe in python: Removing rows from df1 based on rows in df2 熊猫将 df1 中的一列与 df2 中的多列进行比较 - Pandas compare one column from df1 with multiple columns in df2 如何将两个不同的数据框 df1 df2 与特定列(列 w)进行比较,并从 df2 更新 df1 中匹配的行列 AD - how to compare two different data frames df1 df2 with specific column ( column w) and update the matched rows column AD in df1 from df2 pandas 如何从 df2 获取 df1 的值,而 df1 和 df2 的值在列上重叠 - pandas how to get values from df2 for df1 while df1 and df2 have values overlapped on column(s) 根据第三个 df3 比较 df1 和 df2 列中的数据,并从 df2 最后一列获取匹配行数据的数据 - Compare data in df1 and df2 columns based on third df3 and get data for matched row data from df2 last column 将 Pandas df1 的每一行与 df2 中的每一行进行比较,并从最接近的匹配列返回字符串值 - Compare each row of Pandas df1 with every row within df2 and return string value from closest matching column Python Pandas查找并替换df2中的df1值 - Python Pandas lookup and replace df1 value from df2 如何在熊猫数据框中的两行df2中一次插入一行df1 - How to insert a row of df1 one time in two rows of df2 in pandas dataframe 从 DF2 替换 DF1 中的值 - Replace values in DF1 from DF2 熊猫根据df1中的列(代表df2的间隔)检索值 - Pandas retrieve values based on columns in df1 that represents intervals from df2
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM