如何将多个csv文件的选定列连接到一个数据框中? Jupyter

时间:2018-02-08 03:18:25

标签: python pandas jupyter

我有点困惑,因为以下似乎有效:

raw_data_df = pd.DataFrame()


temp = pd.read_csv('/Users/bob/desktop/Research_data/tobii/42r-export.csv', sep = ',', encoding = 'latin-1')
raw_data_df['1'] = temp['Gaze point X']
raw_data_df['2'] = temp['Gaze point Y']

但以下情况不起作用:

for i in files:
  temp = pd.read_csv(path + i , sep = ',', encoding = 'latin-1')
  print(temp['Gaze point X'])
  raw_data_df[i+"x"] = temp['Gaze point X']
  raw_data_df[i+"y"] = temp['Gaze point Y']

文件在哪里

path = "/Users/bob/desktop/Research_data/tobii/"
files = [f for f in listdir(path) if isfile(join(path,f))]

而不是返回一个pandas数据框,其中列名是i +" x"或者我+" y"我得到一份清单清单。

这是使用raw_data_df输出的内容的示例

132660     857
132661     846
Name: Gaze point X, Length: 132662, dtype: int64
0      1206
1      1204
2      1205
3      1205

如何将多个csv文件的选定列连接到一个数据框?

3 个答案:

答案 0 :(得分:0)

我认为没有必要初始化空数据帧。您可以迭代文件,仅加载所需的列(使用os.path.join),然后在最后连接所有数据帧。

此外,在连接路径工件时,请使用import os cols = ['Gaze point X', 'Gaze point Y'] df_list = [] for f in files: temp = pd.read_csv( os.path.join(path, f), sep=',', encoding='latin-1', usecols=cols ) temp.columns = [f + i for i in ['x', 'y']] df_list.append(temp)

pd.concat

现在,只需将数据框与df = pd.concat(df_list, axis=1) 连接起来。

{{1}}

答案 1 :(得分:0)

抱歉,我正在搜索的文件里面有一个ds.store文件。我刚删除它,它正在工作。

答案 2 :(得分:0)

@COLDSPEED's solution上构建,您可以使用列表解析:

def rename_cols(df, f):
    df.columns = [f + i for i in ['x', 'y']]
    return df

df = pd.concat([rename_cols(pd.read_csv(os.path.join(path, f),
                sep=',', encoding='latin-1', usecols=cols), f) for f in files],
                ignore_index=True)
相关问题