pandas -'dataframe'对象没有属性'str' [英] pandas - 'dataframe' object has no attribute 'str'
问题描述
我正在尝试过滤出包含产品列表的数据框.但是,我遇到了熊猫-每当我运行代码时,"dataframe"对象都没有属性"str"错误.
I am trying to filter out the dataframe that contains a list of product. However, I am getting the pandas - 'dataframe' object has no attribute 'str' error whenever I run the code.
这是代码行:
include_clique = log_df.loc[log_df['Product'].str.contains("Product A")]
如果有人有任何建议的想法,请告诉我.我已经搜索了很多次,而且非常困惑.
If anyone has any ideas of suggestions, please let me know. I've searched many times and I'm quite stuck.
Product是对象数据类型.
Product is an object datatype.
import __future__
import os
import pandas as pd
import numpy as np
import tensorflow as tf
import math
data = pd.read_csv("FILE.csv", header = None)
headerName=["DRID","Product","M24","M23","M22","M21","M20","M19","M18","M17","M16","M15","M14","M13","M12","M11","M10","M9","M8","M7","M6","M5","M4","M3","M2","M1"]
cliques = [(Confidential)]
data.columns=[headerName]
log_df = data
log_df = np.log(1+data[["M24","M23","M22","M21","M20","M19","M18","M17","M16","M15","M14","M13","M12","M11","M10","M9","M8","M7","M6","M5","M4","M3","M2","M1"]])
copy = data[["DRID","Product"]].copy()
log_df = copy.join(log_df)
include_clique = log_df.loc[log_df['Product'].str.contains("Product A")]
这是头:
ID PRODUCT M24 M23 M22 M21
0 123421 A 0.000000 0.000000 1.098612 0.0
1 141840 A 0.693147 1.098612 0.000000 0.0
2 212006 A 0.693147 0.000000 0.000000 0.0
3 216097 A 1.098612 0.000000 0.000000 0.0
4 219517 A 1.098612 0.693147 1.098612 0.0
edit 2:这里是print(data),A是产品.当我将其打印出来时,看起来好像A不在类别产品下.
edit 2: here is print(data), A is the product. it looks like A is not under the category product when I print it out.
DRID Product M24 M23 M22 M21 M20 \
0 52250 A 0.0 0.0 2.0 0.0 0.0
1 141840 A 1.0 2.0 0.0 0.0 0.0
2 212006 A 1.0 0.0 0.0 0.0 0.0
3 216097 A 2.0 0.0 0.0 0.0 0.0
推荐答案
简短答案:将data.columns=[headerName]
更改为data.columns=headerName
说明::设置data.columns=[headerName]
时,列为MultiIndex对象.因此,您的log_df['Product']
是一个DataFrame,对于DataFrame,没有str
属性.
Explanation: when you set data.columns=[headerName]
, the columns are MultiIndex object. Therefore, your log_df['Product']
is a DataFrame and for DataFrame, there is no str
attribute.
设置data.columns=headerName
时,log_df['Product']
是单列,并且可以使用str
属性.
When you set data.columns=headerName
, your log_df['Product']
is a single column and you can use str
attribute.
由于任何原因,如果需要将数据保留为MultiIndex对象,则还有另一种解决方案:首先将log_df['Product']
转换为Series.之后,str
属性可用.
For any reason, if you need to keep your data as MultiIndex object, there is another solution: first convert your log_df['Product']
into Series. After that, str
attribute is available.
products = pd.Series(df.Product.values.flatten())
include_clique = products[products.str.contains("Product A")]
但是,我想第一个解决方案就是您要寻找的
However, I guess the first solution is what you're looking for
这篇关于 pandas -'dataframe'对象没有属性'str'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!