【问题标题】:Creating a new dataframe that only pulls out rows contains a specific word创建一个只提取行的新数据框包含一个特定的单词
【发布时间】:2021-02-16 11:41:05
【问题描述】:

我正在开展一个项目,以识别 2 个 Excel 工作簿之间的差异。如果单元格值存在差异,代码会使用字符串“old value Changed to “new value”填充单元格

下面第一行代码中的df_orig 包含突出显示所有更改的比较。然后我开始创建数据框以提取df_orig 中包含值“Change”的行,如下所示。

我想要做的是检查df_orig 中的每一列,如果值“更改”出现在任何行中以拉出该行并创建一个新数据框,其中包含具有该“更改”值的所有行并输出它到一个新的 Excel 工作簿。在我的df_orig 中有 187 列,所以我在下面的数据框之后创建数据框的方法不起作用。

df_orig = pd.read_excel ('Horizon/Output/Full_LeaseOutput.xlsx')

df1 = df[df['Lease'].str.contains('Changed', na=False)]
df2 = df[df['Lease Description'].str.contains('Changed', na=False)]
df3 = df[df['Type'].str.contains('Changed', na=False)]
df4 = df[df['Tenant Ref'].str.contains('Changed', na=False)]
df5 = df[df['Tenant Name'].str.contains('Changed', na=False)]
df6 = df[df['Property Ref'].str.contains('Changed', na=False)]

df7 = pd.concat([df1,df2,df3,df4,df5,df6])
df7.to_excel('Horizon/Output/Differences.xlsx', index=True,header=True)

【问题讨论】:

    标签: python excel pandas dataframe


    【解决方案1】:

    只是稍微修改你的代码

    df_orig = pd.read_excel ('Horizon/Output/Full_LeaseOutput.xlsx')
    
    ind = df['Lease'].str.contains('Changed', na=False)&\
          df['Lease Description'].str.contains('Changed', na=False)&\
          df['Type'].str.contains('Changed', na=False)&\
          df['Tenant Ref'].str.contains('Changed', na=False)&\
          df['Tenant Name'].str.contains('Changed', na=False)&\
          df['Property Ref'].str.contains('Changed', na=False)
    
    dfnew = df[ind] 
    
    dfnew.to_excel('Horizon/Output/Differences.xlsx', index=True,header=True)
    

    每个条件都为匹配行提供了一个逻辑向量为真。因此,使用&,我们可以选择每个条件都必须为 True 的行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-10
      • 2019-04-18
      相关资源
      最近更新 更多