2016-05-16 2 views
0

Я пытаюсь очистить только один столбец из больших и больших наборов данных. Данные содержат 18 столбцов, более 10k + строк около 100 csv файлов, из которых я хочу очистить только один столбец.Очистить один столбец от большого и большого набора данных

поля ввода только несколько из длинного списка

userLocation, userTimezone, Coordinates, 
India,   Hawaii, {u'type': u'Point', u'coordinates': [73.8567, 18.5203]} 
California,  USA  
      ,  New Delhi, 
Ft. Sam Houston,Mountain Time (US & Canada),{u'type': u'Point', u'coordinates': [86.99643, 23.68088]} 
Kathmandu,Nepal, Kathmandu, {u'type': u'Point', u'coordinates': [85.3248024, 27.69765658]} 

Полный входной файл: Dropbox link

Код:

import pandas as pd 

    data = pandas.read_cvs('input.csv') 

    df = ['tweetID', 'tweetText', 'tweetRetweetCt', 'tweetFavoriteCt',  
      'tweetSource', 'tweetCreated', 'userID', 'userScreen', 
      'userName', 'userCreateDt', 'userDesc', 'userFollowerCt', 
      'userFriendsCt', 'userLocation', 'userTimezone', 'Coordinates', 
      'GeoEnabled', 'Language'] 

    df0 = ['Coordinates'] 

Другие столбцы написанному, как в продукции. После этого, как это сделать?

Выхода:

userLocation, userTimezone, Coordinate_one, Coordinate_one, 
India,   Hawaii,   73.8567, 18.5203 
California,  USA  
      ,  New Delhi, 
Ft. Sam Houston,Mountain Time (US & Canada),86.99643, 23.68088 
Kathmandu,Nepal, Kathmandu, 85.3248024, 27.69765658 

Возможное простое предложение или направить меня в какой-то пример будет много полезным.

ответ

1

Здесь не так много вещей.

  1. Файл не является простым csv и не обрабатывается соответствующим образом вашим предполагаемым data = pd.read_csv('input.csv').
  2. «Координаты» подано, кажется, json
  3. снабжать струной, тетивой и т.п.
  4. Есть Нэн в том же поле

Это то, что я сделал до сих пор. Вы захотите немного поработать над собственным анализом этого файла

import pandas as pd 

df1 = pd.read_csv('./Turkey_28.csv') 

coords = df1[['tweetID', 'Coordinates']].set_index('tweetID')['Coordinates'] 

coords = coords.dropna().apply(lambda x: eval(x)) 
coords = coords[coords.apply(type) == dict] 

def get_coords(x): 
    return pd.Series(x['coordinates'], index=['Coordinate_one', 'Coordinate_two']) 

coords = coords.apply(get_coords) 

df2 = pd.concat([coords, df1.set_index('tweetID').reindex(coords.index)], axis=1) 

print df2.head(2).T 

tweetID           714602054988275712 
Coordinate_one            23.2745 
Coordinate_two            56.6165 
tweetText  I'm at MK Appartaments in Dobele https://t.co/... 
tweetRetweetCt             0 
tweetFavoriteCt             0 
tweetSource            Foursquare 
tweetCreated         2016-03-28 23:56:21 
userID             782541481 
userScreen           MartinsKnops 
userName            Martins Knops 
userCreateDt         2012-08-26 14:24:29 
userDesc   I See Them Try But They Can't Do What I Do. Be... 
userFollowerCt             137 
userFriendsCt             164 
userLocation          DOB Till I Die 
userTimezone           Casablanca 
Coordinates  {u'type': u'Point', u'coordinates': [23.274462... 
GeoEnabled             True 
Language              en 
+0

Спасибо за ответ. –

+0

Большое вам спасибо. Это решило половину моей проблемы. –

1

Строки 10K не похожи на большие данные. Сколько у вас колонок?

Я не понимаю ваш код, он сломан, но простой пример манипуляции:

df = pd.read_cvs('input.csv') 
df['tweetID'] = df['tweetID'] + 1 # add 1 
df.to_csv('output.csv', index=False) 

Если данные не помещаются в памяти, который вы могли бы рассмотреть возможность использования DASK.

+0

Спасибо за ответ. 10K - только для одного из файлов. У меня есть более 100 таких файлов. 18 столбцов в необработанном файле. И я хочу очистить только столбцы «координат» и в выходном файле со всеми столбцами ввода. –

+1

Вы можете сделать это итеративно. Создайте список всех файлов и обрабатывайте их один за другим в цикле for. – dukebody

+0

На данный момент я хочу правильно очистить один файл .. для которого я сталкиваюсь со слишком многими неудачами :( –