我正在尝试将数据框值附加为行,但将它们附加为列。我有 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)
请您参考如下方法:
您已经有两个非常好的答案,但让我提出一些建议。
- 如果您只需要
dataset_code列,请直接告诉pd.read_csv(usecols=['dataset_code']) 而不是加载整个文件仅存入内存以立即对数据帧进行子集化。 - 不是附加到最初为空的数据框,而是收集数据框列表并在最后一口气将它们连接起来。将行附加到 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)
