1

我已经搜索了问题“如何逐行构建数据框”的十几个变体,但没有一个解决方案对我有用。因此,尽管这是一个经常被问到的问题,但我的案例是独一无二的,足以成为一个有效的问题。我认为问题可能是我从不同的 csv 中获取每一行。这段代码表明我在循环中成功地制作了数据框:

onlyfiles = list_of_csvs 
for idx, f in enumerate(onlyfiles):
    row = pd.read_csv(mypath + f,sep="|").iloc[0:1]

但是这些行是单独的数据帧,不能组合(到目前为止)。我尝试了以下方法:

df = pd.DataFrame()
for idx, f in enumerate(onlyfiles):
    row = pd.read_csv(path + f,sep="|").iloc[0:1]
    df.iloc(idx) = row

哪个返回

    df.loc(idx) = row
    ^
SyntaxError: can't assign to function call

我认为问题在于每一行或数据帧都有自己的标题。我也尝试过df.loc(idx) = row[1],但这也不起作用(我们抓住的地方row[:] when idx = 0)。两者都iloc(idx) or loc(idx)不起作用。

最后,我想要一个数据帧,它具有第一个数据帧的标题(列名),然后是 n 行,其中 n 是文件数。

4

1 回答 1

1

试试pd.concat()

请注意,您可以直接从文件中读取第一行,而不是读取文件然后限制到第一行。nrows=1在 pd.read_csv 中传递参数。

onlyfiles = list_of_csvs 
df_joint = pd.DataFrame()
for f in enumerate(onlyfiles):
    df_ = pd.read_csv(mypath + f,sep="|", nrows=1)
    df_joint = pd.concat([df_joint, df_])
于 2020-11-10T04:23:04.263 回答