我有点困惑,因为以下似乎有效:
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文件的选定列连接到一个数据框?
答案 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)
答案 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)