【问题标题】:Comparing and changing columns from different dataframe - Python/pandas比较和更改来自不同数据框的列 - Python/pandas
【发布时间】:2022-01-12 19:19:33
【问题描述】:

我有两个文件的列长度不同,如下所示:

df2:  
  N_Machine       x       y       z
0     CB-32   90.42  910.29   62.68
1     CB-27  985.65  995.54  669.62
2     CB-18  852.92  952.51  525.60
3     CB-43  950.92  906.64  618.59

df:
    Name    Number
0   CB-15  12.55.47
1   CB-32  12.55.21
2   CB-91  12.55.75
3   CB-07  12.55.13
4   CB-22  12.55.14
5   CB-16  12.55.52
6   CB-43  12.55.49
7   CB-24  12.55.55
8   CB-17  12.55.31
9   CB-32  12.55.33
10  CB-38  12.55.19
11  CB-27  12.55.62
12  CB-51  12.55.23
13  CB-14  12.55.39
14  CB-31  12.55.65
15  CB-41  12.55.62
16  CB-20  12.55.70
17  CB-18  12.55.26
18  CB-10  12.55.44

我一直在做的是:尝试比较列 df['Name'] 和 df2['N_ Machine']。如果它们相等,则 df2['N_ Machine'] 将从相应行接收 df['Number'] 列的值。

例如,df2['N_Machine'] 的第 [0] 行与第 [1] 行中的 df['Number] 匹配。然后 df2['N_Machine'] 应该从 df['Number] 接收值'12.55.21'。因此 df2 的 [0] 行将更改为:

df:  
  N_Machine       x       y       z
0     12.55.21   90.42  910.29   62.68

我的代码如下。我的问题是:比较列后,df2['Machine'] 正在接收 df['Number'] 的第一个值,而不是匹配行中的 df['Number'] 值,我该如何解决这个问题?

import pandas as pd
import pandas

df = pandas.read_excel('Part_Dat.xlsx', engine='openpyxl')

df2 = pd.read_csv("Data_Aver_Coord.csv")

if [df['Name'].isin(df2['N_Machine'])]:
    df2['N_Machine']=df['Number']`

【问题讨论】:

    标签: python pandas dataframe numpy compare


    【解决方案1】:

    使用pandas.DataFrame.merge():

    df3 = df1.merge(df2, left_on='N_Machine', right_on='Name', how='outer').drop(['N_Machine'], axis=1)
    

    输出:

    >>> df3
             x       y       z   Name    Number
    0    90.42  910.29   62.68  CB-32  12.55.21
    1    90.42  910.29   62.68  CB-32  12.55.33
    2   985.65  995.54  669.62  CB-27  12.55.62
    3   852.92  952.51  525.60  CB-18  12.55.26
    4   950.92  906.64  618.59  CB-43  12.55.49
    5      NaN     NaN     NaN  CB-15  12.55.47
    6      NaN     NaN     NaN  CB-91  12.55.75
    7      NaN     NaN     NaN  CB-07  12.55.13
    8      NaN     NaN     NaN  CB-22  12.55.14
    9      NaN     NaN     NaN  CB-16  12.55.52
    10     NaN     NaN     NaN  CB-24  12.55.55
    11     NaN     NaN     NaN  CB-17  12.55.31
    12     NaN     NaN     NaN  CB-38  12.55.19
    13     NaN     NaN     NaN  CB-51  12.55.23
    14     NaN     NaN     NaN  CB-14  12.55.39
    15     NaN     NaN     NaN  CB-31  12.55.65
    16     NaN     NaN     NaN  CB-41  12.55.62
    17     NaN     NaN     NaN  CB-20  12.55.70
    18     NaN     NaN     NaN  CB-10  12.55.44
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-15
      • 2021-08-29
      相关资源
      最近更新 更多