为了账号安全,请及时绑定邮箱和手机立即绑定

迭代空白电子表格时如何将占位符插入聚合的df

迭代空白电子表格时如何将占位符插入聚合的df

千万里不及你 2022-01-18 17:28:13
我正在遍历位于主目录中各个文件中的 Excel 电子表格。大多数电子表格如下所示:df = pd.DataFrame({"A": [1, 2, 3],                    "B": [4, 5, 6],                  "C": [7, 8, 9],                  "D": [10, 11, 12],                  "E": [13, 14, 15],                  "F": [16, 17, 18],                  "G": [19, 20, 21]})但是,我的电子表格中有大约 100 个与我填充的电子表格具有相同的名称和列数,但是,没有数据存在。它们看起来像这样:df2 = pd.DataFrame({"A": [],                    "B": [],                  "C": [],                  "D": [],                  "E": [],                  "F": [],                  "G": []})我仍然想“提取”该信息,并为这些空白行插入一个占位符。我的预期结果如下所示:df3 = pd.DataFrame({"A": [1, 2, 3, NaN],                   "B": [4, 5, 6, NaN],                  "C": [7, 8, 9, NaN],                  "D": [10, 11, 12, NaN],                  "E": [13, 14, 15, NaN],                  "F": [16, 17, 18, NaN],                  "G": [19, 20, 21, NaN]})目前,我的代码没有使用占位符 (NaN) 填充聚合电子表格。在检查我的 df 是否为空时,我尝试 df.fillna 以及附加 NaN,但是,我仍然没有用我的空电子表格中的 NaN 填充我的聚合 df。这是我到目前为止所写的:import osimport pandas as pdpd.options.display.max_rows=999import numpyfrom numpy import NaNroot = "my_dir"agg_df = pd.DataFrame()blank_rows = pd.Series([NaN,NaN,NaN,NaN,NaN,NaN,NaN], index=['A', 'B', 'C',                                                'D', 'E',                                                 'F', 'G'])for directory, subdirectory, files in os.walk(root):#     print(directory)    for file in files:        filepath = os.path.join(directory, file)        print(directory)        if file == 'Apples.xlsx':            df_temp = pd.read_excel(filepath, sheet_name = 'Apples')            df_temp['Filepath'] = filepath            if df_temp.empty == True:                df_temp.append(blank_rows, ignore_index = True)                     agg_df = agg_df.append(df_temp)
查看完整描述

1 回答

?
白衣染霜花

TA贡献1796条经验 获得超10个赞

您创建的 blank_rows 不是一行,而是七行。所以我用 None 值创建了一行(NaN 无效)。然后为 agg_df 添加一个空白行,我使用了 concat。


root = ''

agg_df = pd.DataFrame()

blank_rows = pd.DataFrame(pd.Series([None,None,None,None,None,None,None], 

                                    index=['A', 'B', 'C',

                                                'D', 'E', 

                                                'F', 'G'])).transpose()

for directory, subdirectory, files in os.walk(root):

    for file in files:

        filepath = os.path.join(directory, file)

        df_temp = pd.read_excel(filepath, sheet_name = 'Apples')

        blank_rows['filepath'] = filepath

        if file == 'Apples.xlsx':

            if df_temp.empty == True:

                agg_df = pd.concat([agg_df, blank_rows])

结果:


     A      B        C      D       E        F      G     filepath

0   None    None    None    None    None    None    None  my_dir\Apples.xlsx


查看完整回答
反对 回复 2022-01-18
  • 1 回答
  • 0 关注
  • 185 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号