python - 如何解析熊猫数据框对象
问题描述
我在 pandas Dataframe 中读取 csv 文件,然后获取它的虚拟文件并将它们连接起来,但例如我有名为“流派”的列,它包含“喜剧、戏剧”和“动作、喜剧”,所以当我得到虚拟并连接它们时每个句子都有一个对象,但我想解析它们。例如,我想制作对象'Genre.comedy','Genre.Drama','Genre.action' 而不是 'Genre.comedy,drama'和'Genre.action,喜剧' 这是我的代码:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import csv
from sklearn import preprocessing
trainset = pd.read_csv("/Users/yada/Downloads/IMDBMovieData.csv", encoding='latin-1')
X = trainset.drop(['Description', 'Runtime'], axis=1)
features = ['Genre','Actors']
for f in features:
X_dummy = pd.get_dummies(X[f], prefix = f)
X = X.drop([f], axis = 1)
X = pd.concat((X, X_dummy), axis = 1)
这是我的 csv 文件的某一行: csv
解决方案
我认为str.get_dummies
需要add_prefix
:
features = ['Genre','Actors']
for f in features:
X_dummy = X[f].str.get_dummies(', ').add_prefix(f + '.')
X = X.drop([f], axis = 1)
X = pd.concat((X, X_dummy), axis = 1)
或者:
trainset = pd.DataFrame({'Description':list('abc'),
'Genre':['comedy, drama','action, comedy','action'],
'Actors':['a, b','a, c','d, a'],
'Runtime':[1,3,5],
'E':[5,3,6],
'F':list('aaa')})
print (trainset)
Description Genre Actors Runtime E F
0 a comedy, drama a, b 1 5 a
1 b action, comedy a, c 3 3 a
2 c action d, a 5 6 a
X = trainset.drop(['Description', 'Runtime'], axis=1)
features = ['Genre','Actors']
X_dummy_list = [X.pop(f).str.get_dummies(', ').add_prefix(f + '.') for f in features]
X = pd.concat([X] + X_dummy_list , axis = 1)
print (X)
E F Genre.action Genre.comedy Genre.drama Actors.a Actors.b \
0 5 a 0 1 1 1 1
1 3 a 1 1 0 1 0
2 6 a 1 0 0 1 0
Actors.c Actors.d
0 0 0
1 1 0
2 0 1
推荐阅读
- android - 如何将 mockk 与通用构造函数参数一起使用?
- javascript - 如何覆盖setTimeout?
- php - 如何在代码点火器 4 中添加验证必须包含特定字符?
- vhdl - VHDL 测试平台/Vivado
- python - 从 seaborn 箱线图中删除空白空间
- botframework - 有没有办法在使用 DirectlineJS 而不是 React 的 Webchat 中清除聊天记录
- c# - 使用过滤器时,MSGraph 分页失败,过滤器子句无效
- google-bigquery - 无法将 Power BI 服务连接到 Google BigQuery - 登录循环
- python - 每次从 csv Elasticsearch 创建新索引时更新索引
- locust - 蝗虫响应时间开始时的高延迟