如何计算纬度和经度指定的两点之间的距离?
为了澄清,我想要以公里为单位的距离; 这些要点使用WGS84系统,我想了解可用方法的相对准确性.
我想合并两个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) 我在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列.如何以编程方式找到这一行?
我见过:
这些与香草蟒蛇有关,而不是熊猫.
如果我有这个系列:
ix num
0 1
1 6
2 4
3 5
4 2
Run Code Online (Sandbox Code Playgroud)
我输入3,我怎样才能(有效地)找到?
IE浏览器.使用上面的系列{1,6,4,5,2}和输入3,我应该得到带有索引(2,4)的值(4,2).
我此刻陷入困境.我确信我错过了一些简单的东西,但是你如何通过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'
我想替换包含特定子字符串的所有字符串.例如,如果我有这个数据帧:
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(在这种情况下football和basketball)与"球运动".像这样的东西:
df.replace({'sport': {'[strings that contain ball]': 'ball sport'}})
Run Code Online (Sandbox Code Playgroud) 给定一个数据帧如何找出所有只有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) 我将数据框分组为下面的两列
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) 我有一个像这样的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基于创建新列used是1.0,alert应该是Full.used是0.0,alert应该是Empty.alert应该是Partial.最好的方法是什么?
我有一张如下表:
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)
但是,以下代码不会产生唯一的字数.