Skip to main content
 首页 » 编程设计

Python Pandas Dataframe 追加行

2025年05月04日12JeffreyZhao

我正在尝试将数据框值附加为行,但将它们附加为列。我有 32 个文件,我想从中取出第二列(称为数据集代码)并将其附加。但它创建了 32 行和 101 列。我想要 1 列和 3232 行。

import pandas as pd 
import os 
 
 
 
source_directory = r'file_path' 
 
df_combined = pd.DataFrame(columns=["dataset_code"]) 
 
for file in os.listdir(source_directory): 
    if file.endswith(".csv"): 
            #Read the new CSV to a dataframe.   
            df = pd.read_csv(source_directory + '\\' + file) 
            df = df["dataset_code"] 
            df_combined=df_combined.append(df) 
 
 
 
print(df_combined) 

请您参考如下方法:

您已经有两个非常好的答案,但让我提出一些建议。

  1. 如果您只需要 dataset_code 列,请直接告诉 pd.read_csv (usecols=['dataset_code']) 而不是加载整个文件仅存入内存以立即对数据帧进行子集化。
  2. 不是附加到最初为空的数据框,而是收集数据框列表并在最后一口气将它们连接起来。将行附加到 pandas DataFrame 的成本很高(它必须创建一个全新的行),因此您的方法创建了 65 个 DataFrame:开头一个,读取每个时一个文件,当附加每个后者时一个 - 甚至可能超过 32 个,带有子集。我提出的方法只创建了其中的 33 个,并且是这种导入的常见用法。

代码如下:

import os 
import pandas as pd 
 
source_directory = r'file_path' 
 
dfs = [] 
for file in os.listdir(source_directory): 
    if file.endswith(".csv"): 
        df = pd.read_csv(os.join.path(source_directory, file), 
                        usecols=['dataset_code']) 
        dfs.append(df) 
 
df_combined = pd.concat(dfs)