2014-12-05 87 views
0

所以我是新手編程和剛開始使用熊貓。熊貓清潔數據

以下是我的數據框的特定列(稱爲類別)中的值列表。我如何刪除「,」,以便它變得像一個正常的列表,看起來像:

0  ['Doctors','Health & Medical'] 
1  ['Restaurant'] 

而不是像下面看起來。請幫忙。

0  [,u,',D,o,c,t,o,r,s,',,, ,u,',H,e,a,l,t,h, ,&,... 
1      [,u,',R,e,s,t,a,u,r,a,n,t,s,',] 
2  [,u,',A,m,e,r,i,c,a,n, ,(,T,r,a,d,i,t,i,o,n,a,... 
3  [,u,',F,o,o,d,',,, ,u,',I,c,e, ,C,r,e,a,m, ,&,... 
4  [,u,',C,h,i,n,e,s,e,',,, ,u,',R,e,s,t,a,u,r,a,... 
+1

你從CSV加載數據?源數據的外觀如何? – 2014-12-05 06:57:14

+0

您可能正在尋找'column.str.split(「,」)' – cel 2014-12-05 07:01:13

+0

@TarunGaba:原始數據在json中,我將它轉換爲csv,然後使用pandas的read_csv函數將其導入數據幀。所以,我猜在從json到csv的轉換之間的某個地方添加了逗號。 – bshah 2014-12-05 19:53:28

回答

0

我不太明白你的問題。這就是我得到:

mylist = [['Doctors','Health & Medical'], ['Restaurant']] 
pandas.Series(mylist) 

輸出:

0 [Doctors, Health & Medical] 
1     [Restaurant] 
dtype: object 
+0

我想要一個在你的例子中看起來像mylist的列表。目前,我的列表中的每個字符都以「,」(逗號)分隔。原始數據在json中,我將它轉換爲csv,然後使用pandas的read_csv函數將其導入到數據幀。所以,我猜在從json到csv的轉換之間的某個地方添加了逗號。 – bshah 2014-12-05 19:57:27

+0

我相信如此。請爲此示例發佈JSON。 – Emre 2014-12-06 20:05:46

0

從我明白你的問題,這就是你正在嘗試做的:

你必須用逗號分隔的字符串的數據幀名單。

import pandas as pd 
df = pd.DataFrame({ 
    "list_col" : ["Doctors,Health & Medical", "Restaurant"] 
}) 

現在,您可以分割使用pandas字符串操作工具:

col_of_lists = df.list_col.str.split(",") 

之後,您可以訪問列表項目以各種方式,如:

col_of_lists[0][1]將訪問一個單一的項目: - >'Health & Medical'

col_of_lists.str[0]將創建一個只有每個列表的第一個元素的新列o如果沒有第一個元素,則請輸入NAN

0  [Doctors] 
1 [Restaurant] 
Name: list_col, dtype: object 

由於您沒有提出具體的問題,因此很難給出準確的答案。

1

如果您不一定需要將JSON轉換爲csv,則可以從JSON本身加載數據。

import pandas as pd 

dframe = pd.json_read(json_dumped_as_string) 

希望有幫助! .. :)

0

它看起來像你想轉換行的數據幀像這樣

s = pd.DataFrame(["[,u,',R,e,s,t,a,u,r,a,n,t,s,',, ,u,',D,o,c,t,o,r,s,',,,,,, ,,u,',F,o,o,d,']"], columns=['categories']) 

字列出行。

我的解決辦法:

import re 

t = s['categories'].apply(lambda k: re.findall(r"u\'(.+?)\'", k.replace(',',''))) 

>>> 0 [Restaurants, Doctors, Food] 
Name: value, dtype: object 
+0

謝謝!這似乎工作。 :d – bshah 2014-12-19 23:10:43