我有点困惑,因为下面的方法似乎是有效的:
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))]我没有返回列名为i+"x“或i+"y”的pandas数据框,而是得到了一个列表列表。
以下是使用raw_data_df输出的内容示例
132660 857
132661 846
Name: Gaze point X, Length: 132662, dtype: int64
0 1206
1 1204
2 1205
3 1205如何将多个csv文件的选定列连接到一个数据框中?
发布于 2018-02-08 11:26:45
我不认为有任何需要初始化一个空的数据帧。您可以遍历文件,只加载所需的列(使用usecols),然后在最后连接所有数据帧。
此外,在连接路径工件时,请使用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)发布于 2018-02-08 11:38:39
很抱歉,我正在搜索的文件中有一个ds.store文件,它遍历了所有内容。我刚刚删除了它,它正在工作。
发布于 2018-02-08 12:04:51
在@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)https://stackoverflow.com/questions/48676983
复制相似问题