将一个文件中的多个列合并到一列列表中

2024-04-29 11:41:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我对pandas不熟悉,需要使用pandas准备一个表,模仿下面代码片段执行的确切函数:

with open(r'D:/DataScience/ml-100k/u.item') as f:
    temp=''
    for line in f:
        fields = line.rstrip('\n').split('|')
        movieId = int(fields[0])
        name = fields[1]
        geners = fields[5:25]
        geners = map(int, geners)

我的问题是如何在同一个目录中添加geners列: geners = fields[5:25]


Tags: 函数代码pandasfieldsforaswithline
1条回答
网友
1楼 · 发布于 2024-04-29 11:41:46

我不清楚你打算实现一个包含5-25个连接字段的单一类型列是什么?或者为第5-25栏设置单独的类型栏?你知道吗

对于后者,可以使用[pandas.read_csv](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html)

import pandas as pd

cols = ['movieId', 'name'] + ['genre_' + str(i) for i in range(5, 25)]
df = pd.read_csv(r'D:/DataScience/ml-100k/u.item', delimiter='|', names=cols)

对于前者,您可以使用以下方法将流派连接到一个以空格分隔的列表中:

df['genres'] = df[cols[2:]].apply(lambda x: ' '.join(x), axis=1)
df.drop(cols[2:], axis=1, inplace=True) # drop the separate genre_N columns

相关问题 更多 >