2016-11-30 2 views
0

i für alle Werte in Datenrahmen, obere Fälle ändern möchten ändern und die folgenden Codes verwenden,wie obere Fälle für alle Werte in Datenrahmen

import pandas as pd 
import numpy as np 

path1= "C:\\Users\\IBM_ADMIN\\Desktop\\ml-1m\\SELECT_FROM_HRAP2P3_SAAS_ZTXDMPARAM_201611291745.csv" 
frame1 = pd.read_csv(path1,encoding='utf8',dtype = {'COUNTRY_CODE': str}) 
for x in frame1: 
    frame1[x] = frame1[x].str.lower() 
frame1 

aber ich bekomme die folgende Fehlermeldung für diese Zeile:

frame1[x] = frame1[x].str.lower() 

Fehler:

AttributeError: Can only use .str accessor with string values, which use np.object_ dtype in pandas 

weiß nicht den Grund,

+0

Wahrscheinlich, weil Sie Felder, die nicht vom Typ String sind. Sie können versuchen: 'frame1 [x] = frame1 [x] .astype (str) .str.lower()'. – Abdou

+0

das ist der grund, vielen dank, – tonyibm

Antwort

1

Sie applymap Funktion nutzen zu können.

import pandas as pd 

df1 = pd.DataFrame({'MovieName': ['LIGHTS OUT', 'Legend'], 'Actors':['MARIA Bello', 'Tom Hard']}) 
df2=df1.applymap(lambda x: x.lower()) 
print df1, "\n" 
print df2 

Ausgang:

 Actors MovieName 
0 MARIA Bello LIGHTS OUT 
1  Tom Hard  Legend 

     Actors MovieName 
0 maria bello lights out 
1  tom hard  legend 
+0

es ist gut, lambda zu verwenden, danke – tonyibm

0

Versuchen Sie, str.lower auf Series-Objekt zu verwenden.

Unterstützen Sie Ihre Datenrahmen wie unten:

df = pd.DataFrame(dict(name=["HERE", "We", "are"])) 

    name 
0 HERE 
1 We 
2 are 

Dann niedriger alle Werte und Ausgang:

df['name'] = df['name'].str.lower() 

    name 
0 here 
1 we 
2 are 
+0

danke, das hilft auch, – tonyibm

0

Sie können dies versuchen:

df2 = pd.DataFrame({ 'A' : 1., 
        'B' : pd.Timestamp('20130102'), 
        'C' : pd.Series(1,index=list(range(4)),dtype='float32'), 
        'D' : np.array([3] * 4,dtype='int32'), 
        'E' : pd.Series(["TEST","Train","test","train"]), 
        'F' : 'foo' }) 

mylist = list(df2.select_dtypes(include=['object']).columns) # in dataframe  
               #string is stored as object 

for i in mylist: 
    df2[i]= df2[i].str.lower() 
+0

danke, ich werde diese option versuchen – tonyibm

Verwandte Themen