从长数据和大数据中清除一列

2024-09-28 01:32:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从长数据集中只清除一列。数据有18列,超过10k+行,大约有100s个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

代码:

^{pr2}$

其他列要像输出一样写入。之后怎么办?在

输出:

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

可能最简单的建议或指导我举一些例子会很有帮助。在


Tags: 文件数据newtypepointftcoordinatesusa
2条回答

这里有很多问题。在

  1. 该文件不是一个简单的csv,并且假定的data = pd.read_csv('input.csv')无法正确解析。在
  2. “Coordinates”字段似乎是json字符串
  3. 在同一块地里也有楠

这就是我目前所做的。您需要自己做一些工作来更恰当地解析这个文件

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

10K行看起来根本不像大数据。你有几列?在

我不明白,你的代码很容易被破坏:

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

如果你的数据不适合内存,你可以考虑使用Dask。在

相关问题 更多 >

    热门问题