小编Zer*_*ero的帖子

计算两个纬度 - 经度点之间的距离?(Haversine配方)

如何计算纬度和经度指定的两点之间的距离?

为了澄清,我想要以公里为单位的距离; 这些要点使用WGS84系统,我想了解可用方法的相对准确性.

algorithm math maps latitude-longitude haversine

852
推荐指数
19
解决办法
72万
查看次数

使用pandas merge时如何保持索引

我想合并两个DataFrames,并保持第一帧的索引作为合并数据集的索引.但是,当我执行合并时,生成的DataFrame具有整数索引.如何指定我想保留左数据框的索引?

In [4]: a = pd.DataFrame({'col1': {'a': 1, 'b': 2, 'c': 3}, 
                          'to_merge_on': {'a': 1, 'b': 3, 'c': 4}})

In [5]: b = pd.DataFrame({'col2': {0: 1, 1: 2, 2: 3}, 
                          'to_merge_on': {0: 1, 1: 3, 2: 5}})

In [6]: a
Out[6]:
   col1  to_merge_on
a     1            1
b     2            3
c     3            4

In [7]: b
Out[7]:
   col2  to_merge_on
0     1            1
1     2            3
2     3            5

In [8]: a.merge(b, how='left')
Out[8]:
   col1  to_merge_on  col2
0     1            1 …
Run Code Online (Sandbox Code Playgroud)

python pandas

105
推荐指数
5
解决办法
5万
查看次数

在pandas中的数据框中查找非数字行?

我在pandas中有一个大型数据框,除了用作索引的列之外,它应该只有数值:

df = pd.DataFrame({'a': [1, 2, 3, 'bad', 5],
                   'b': [0.1, 0.2, 0.3, 0.4, 0.5],
                   'item': ['a', 'b', 'c', 'd', 'e']})
df = df.set_index('item')
Run Code Online (Sandbox Code Playgroud)

如何找到df其中包含非数字值的数据帧行?

在这个例子中它的第四行中的数据帧,它具有串'bad'a列.如何以编程方式找到这一行?

python dataframe pandas

49
推荐指数
5
解决办法
7万
查看次数

如何在Pandas系列中找到与输入数字最接近的值?

我见过:

这些与香草蟒蛇有关,而不是熊猫.

如果我有这个系列:

ix   num  
0    1
1    6
2    4
3    5
4    2
Run Code Online (Sandbox Code Playgroud)

我输入3,我怎样才能(有效地)找到?

  1. 如果在系列中找到,则索引为3
  2. 如果在系列中找不到,则该值的索引低于和高于3.

IE浏览器.使用上面的系列{1,6,4,5,2}和输入3,我应该得到带有索引(2,4)的值(4,2).

python ranking dataframe pandas

30
推荐指数
4
解决办法
3万
查看次数

在数据框中添加日期到日期

我此刻陷入困境.我确信我错过了一些简单的东西,但是你如何通过x单位向前移动一系列日期?在我更具体的情况下,我想在数据框中的日期系列中添加180天.

这是我到目前为止:

import pandas, numpy, StringIO, datetime


txt = '''ID,DATE
002691c9cec109e64558848f1358ac16,2003-08-13 00:00:00
002691c9cec109e64558848f1358ac16,2003-08-13 00:00:00
0088f218a1f00e0fe1b94919dc68ec33,2006-05-07 00:00:00
0088f218a1f00e0fe1b94919dc68ec33,2006-06-03 00:00:00
00d34668025906d55ae2e529615f530a,2006-03-09 00:00:00
00d34668025906d55ae2e529615f530a,2006-03-09 00:00:00
0101d3286dfbd58642a7527ecbddb92e,2007-10-13 00:00:00
0101d3286dfbd58642a7527ecbddb92e,2007-10-27 00:00:00
0103bd73af66e5a44f7867c0bb2203cc,2001-02-01 00:00:00
0103bd73af66e5a44f7867c0bb2203cc,2008-01-20 00:00:00
'''
df = pandas.read_csv(StringIO.StringIO(txt))
df = df.sort('DATE')
df.DATE = pandas.to_datetime(df.DATE)
df['X_DATE'] = df['DATE'].shift(180, freq=pandas.datetools.Day)
Run Code Online (Sandbox Code Playgroud)

此代码生成类型错误.作为参考我正在使用:

Python 2.7.4 Pandas'0.12.0.dev-6e7c4d6'Numpy'1.7.1'

python datetime pandas

20
推荐指数
3
解决办法
5万
查看次数

如果整个字符串包含pandas中的子字符串,则替换它

我想替换包含特定子字符串的所有字符串.例如,如果我有这个数据帧:

import pandas as pd
df = pd.DataFrame({'name': ['Bob', 'Jane', 'Alice'], 
                   'sport': ['tennis', 'football', 'basketball']})
Run Code Online (Sandbox Code Playgroud)

我可以用这样的字符串'ball sport'替换足球:

df.replace({'sport': {'football': 'ball sport'}})
Run Code Online (Sandbox Code Playgroud)

我想,虽然是替换包含所有ball(在这种情况下footballbasketball)与"球运动".像这样的东西:

df.replace({'sport': {'[strings that contain ball]': 'ball sport'}})
Run Code Online (Sandbox Code Playgroud)

python pandas

18
推荐指数
3
解决办法
2万
查看次数

Python pandas:选择数据框中所有零条目的列

给定一个数据帧如何找出所有只有0作为值的列?

df
   0  1  2  3  4  5  6  7
0  0  0  0  1  0  0  1  0
1  1  1  0  0  0  1  1  1
Run Code Online (Sandbox Code Playgroud)

预期产出

   2  4
0  0  0
1  0  0
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

16
推荐指数
1
解决办法
2万
查看次数

如何从pandas中的groupby对象中选择列?

我将数据框分组为下面的两列

df = pd.DataFrame({'a': [1, 1, 3],
                   'b': [4.0, 5.5, 6.0],
                   'c': [7L, 8L, 9L],
                   'name': ['hello', 'hello', 'foo']})
df.groupby(['a', 'name']).median()
Run Code Online (Sandbox Code Playgroud)

结果是:

            b    c
a name            
1 hello  4.75  7.5
3 foo    6.00  9.0
Run Code Online (Sandbox Code Playgroud)

如何访问name结果中位数的字段(在本例中hello, foo)?这失败了:

df.groupby(['a', 'name']).median().name
Run Code Online (Sandbox Code Playgroud)

python pandas

16
推荐指数
3
解决办法
3万
查看次数

使用条件在pandas dataframe中生成新列

我有一个像这样的pandas数据框:

   portion  used
0        1   1.0
1        2   0.3
2        3   0.0
3        4   0.8
Run Code Online (Sandbox Code Playgroud)

我想基于used列创建一个新列,所以df看起来像这样:

   portion  used    alert
0        1   1.0     Full
1        2   0.3  Partial
2        3   0.0    Empty
3        4   0.8  Partial
Run Code Online (Sandbox Code Playgroud)
  • alert基于创建新列
  • 如果used1.0,alert应该是Full.
  • 如果used0.0,alert应该是Empty.
  • 否则,alert应该是Partial.

最好的方法是什么?

python conditional calculated-columns pandas

16
推荐指数
4
解决办法
5万
查看次数

计算pandas数据帧中单词的频率

我有一张如下表:

      URN                   Firm_Name
0  104472               R.X. Yah & Co
1  104873        Big Building Society
2  109986          St James's Society
3  114058  The Kensington Society Ltd
4  113438      MMV Oil Associates Ltd
Run Code Online (Sandbox Code Playgroud)

我想计算Firm_Name列中所有单词的频率,得到如下输出:

在此输入图像描述

我试过以下代码:

import pandas as pd
import nltk
data = pd.read_csv("X:\Firm_Data.csv")
top_N = 20
word_dist = nltk.FreqDist(data['Firm_Name'])
print('All frequencies')
print('='*60)
rslt=pd.DataFrame(word_dist.most_common(top_N),columns=['Word','Frequency'])

print(rslt)
print ('='*60)
Run Code Online (Sandbox Code Playgroud)

但是,以下代码不会产生唯一的字数.

python nltk pandas

16
推荐指数
2
解决办法
2万
查看次数