在索引中为关键字循环,如果找到了关键字,则将行附加到df如果找不到,则追加空df

lbsnaicq  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(274)

我有零钱 df_x 在Dataframe中,我有时在索引列中找到关键字(例如“debt”),有时找不到它。如果找到了,整行应该被取下来并定义为新的Dataframe df_debt . 以防关键字 debt 在索引列(空的预定义Dataframe)中找不到 df 应视为 df_debt 相反。现在空的Dataframe df 每次都是附加的,即使 df_x 在索引列中有关键字“debt”。
有没有人能帮我编辑下面的循环来首先搜索关键字,如果关键字不存在,只有空的Dataframe才会被追加? df_x 可能看起来像以下两种选择之一:
分解年度1年度2年度3总资产100110110债务908580总净值100100
细分年度1年度2年度3货币资产101111111其他资产918681净值合计101101


# empty dataframe df which shall be taken for further processing if the row in the

# Breakdown index column of df_x is not found

df= pd.DataFrame(columns=['Year1', 'Year2','Year3'])

for i in df_x:
        if idx.contains('Debt'): 
            df_debt= df_x.loc['Debt']
        else: 
            df_debt= df_x.append(df)

有人能帮我吗?
谢谢您。

zy1mlcev

zy1mlcev1#

从你描述的情况来看,你把事情复杂化了。这是个直截了当的面具。条件赋值的注解代码的工作原理与直接赋值完全相同。不需要循环。

df_x = pd.DataFrame({'Breakdown': ['Total Assets', 'Debt', 'Total Net'],
 'Year1': [100, 90, 100],
 'Year2': [110, 85, 100],
 'Year3': [110, 80, 100]}).set_index("Breakdown")

df_x2 = pd.DataFrame({'Breakdown': ['Curr Assets', 'Other Assets', 'Total Net'],
 'Year1': [101, 91, 101],
 'Year2': [111, 86, 101],
 'Year3': [111, 81, 101]}).set_index("Breakdown")

def debt(df_x):
    mask = df_x.index=="Debt"
    return df_x.loc[mask] #if mask.any() else pd.DataFrame(columns=['Year1', 'Year2','Year3'])
print(debt(df_x))
print(debt(df_x2))

输出

Year1  Year2  Year3
Breakdown                     
Debt          90     85     80
Empty DataFrame
Columns: [Year1, Year2, Year3]
Index: []

相关问题