【问题标题】:How to parse pandas Dataframe object如何解析熊猫数据框对象
【发布时间】:2019-01-01 21:12:48
【问题描述】:

我在 pandas Dataframe 中读取 csv 文件,然后获取它的 dummy 并将它们连接起来,但例如我有名为“Genre”的列,它包含“comedy, Drama”和“action, comedy”所以当我得到 dummy 和 concat它们为每个句子创建一个对象,但我想解析它们。例如,我想创建对象 'Genre.comedy''Genre.Drama' 'Genre.action' 而不是 'Genre.comedy,drama''Genre.action,comedy' 这是我的代码:

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

【问题讨论】:

  • 请不要提供代码图片。
  • @Julien 现在准备好了 ;)

标签: python pandas csv parsing dummy-data


【解决方案1】:

我认为需要str.get_dummiesadd_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  

【讨论】:

  • 是的!我知道我应该在 dummy 的命令中做一些事情来识别“,”并从那一点开始解析,但我无法通过搜索找到,非常感谢 Jezrael!
  • 您知道如何打印或获取该数据框的一列吗?例如,我想要“Actors.Keanu Reeves”列,我使用这个: print (X['Actors.Keanu Reeves']) 但它没有用:/
  • 不,效果很好,我只是问另一个问题:)
  • @yasi - 它应该工作得很好,没有一些双空格或类似的?
  • 是的,你是对的,这是空间的问题,非常感谢亲爱的 jezrael!
猜你喜欢
  • 2023-02-03
  • 1970-01-01
  • 2021-08-29
  • 2019-12-07
  • 2018-04-27
  • 2019-08-01
  • 1970-01-01
  • 2018-04-23
  • 2019-01-13
相关资源
最近更新 更多