Pandas提取DataFrame单行时维度异常,如何正确生成单行独立DataFrame
问题根源
你使用csv.loc[0]提取单行时,pandas默认返回的是Series对象而非DataFrame:该Series的索引是原DataFrame的51个列名,值对应行的各列数值,所以你查看结构时会呈现为51行(对应原列数)、2列(对应索引+值)的形态,和你预期的1行51列DataFrame不符。
单行提取调整方法
如果要提取单行并保留DataFrame结构,给loc的行索引包裹一层列表即可:
# 提取第0行,返回1行51列的DataFrame csv_row1 = csv.loc[[0]] # 提取第1行,返回1行51列的DataFrame csv_row2 = csv.loc[[1]] # 验证维度,输出应为 (1,51) print(csv_row1.shape)
如果你的DataFrame索引不是默认的数字序列,想按行的位置提取而非索引值提取,可以换成iloc方法,用法一致:csv.iloc[[0]]取位置第一行的DataFrame。
批量操作方法
如果要批量把每一行都生成独立的DataFrame,可以直接遍历原DataFrame的索引,将结果存入列表或字典统一管理:
# 方法1:存入列表,下标对应原行索引 row_df_list = [csv.loc[[i]] for i in csv.index] # 方法2:存入字典,key自定义(比如用行号命名) row_df_dict = {f"csv_row{i+1}": csv.loc[[i]] for i in csv.index} # 调用示例,取第一行DataFrame print(row_df_list[0].shape) print(row_df_dict["csv_row1"].shape)
内容的提问来源于stack exchange,提问作者AlwaysWondering
相关产品推荐
相关产品推荐

