我有一个包含两列的数据框,A和B.在这种情况下,顺序A和顺序B并不重要; 例如,我会考虑(0,50)并(50,0)重复.在pandas中,从数据框中删除这些重复项的有效方法是什么?
import pandas as pd
# Initial data frame.
data = pd.DataFrame({'A': [0, 10, 11, 21, 22, 35, 5, 50],
'B': [50, 22, 35, 5, 10, 11, 21, 0]})
data
A B
0 0 50
1 10 22
2 11 35
3 21 5
4 22 10
5 35 11
6 5 21
7 50 0
# Desired output with "duplicates" removed.
data2 = pd.DataFrame({'A': [0, 5, …Run Code Online (Sandbox Code Playgroud) 我有一个关于Julia中布尔比较的简单问题.如何将以下Matlab代码翻译成Julia?
Matlab的:
% create parameters
o = -3;
mat = [65 -4; 65 -3; 65 -2]
% determine which rows of matrix have column 2 less than o AND column 1 equal to 65.
result = (o < mat(:,2) & mat(:,1) == 65)
Run Code Online (Sandbox Code Playgroud)
我在Julia尝试了以下内容:
# create parameters
o = -3
mat = zeros(3,2)
mat[:,1] = 65
mat[1,2] = -4
mat[2,2] = -3
mat[3,2] = -2
mat
# attempt to create desired result
o .< mat[:,2] # this part works
mat[:,1] …Run Code Online (Sandbox Code Playgroud) 使用Julia,我想确定行是否位于矩阵中并且(如果适用)行所在的矩阵中的位置.例如,在Matlab中,这可以通过以下方式完成ismember:
a = [1 2 3];
B = [3 1 2; 2 1 3; 1 2 3; 2 3 1]
B =
3 1 2
2 1 3
1 2 3
2 3 1
ismember(B, a, 'rows')
ans =
0
0
1
0
Run Code Online (Sandbox Code Playgroud)
由此,我们可以看到a位于第3行B.在朱莉娅有没有类似的功能来实现这一目标?
考虑如下所示的数据框。
import pandas as pd
# Initialize dataframe
df1 = pd.DataFrame(columns=['bar', 'foo'])
df1['bar'] = ['001', '001', '001', '001', '002', '002', '003', '003', '003']
df1['foo'] = [-1, 0, 2, 3, -8, 1, 0, 1, 2]
>>> print df1
bar foo
0 001 -1
1 001 0
2 001 2
3 001 3
4 002 -8
5 002 1
6 003 0
7 003 1
8 003 2
# Lower and upper bound for desired range
lower_bound = -5
upper_bound = 5 …Run Code Online (Sandbox Code Playgroud) 我有以下熊猫数据框。
import pandas as pd
# Initialize dataframe
df1 = pd.DataFrame(columns=['bar', 'foo'])
df1['bar'] = ['001', '001', '001', '001', '002', '002', '003', '003', '003']
df1['foo'] = [-4, -3, 2, 3, -3, -2, 0, 1, 2]
>>> print df1
bar foo
0 001 -4
1 001 -3
2 001 2
3 001 3
4 002 -3
5 002 -2
6 003 0
7 003 1
8 003 2
Run Code Online (Sandbox Code Playgroud)
考虑以下阈值和参数。
# Provide threshold and number of entries above and below threshold
threshold = …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 SciPy 的 scipy.optimize.minimize 函数来最小化我创建的函数。但是,我试图优化的函数本身是由其他函数构建的,这些函数执行基于 Pandas DataFrame 的计算。
我知道 SciPy 的最小化函数可以通过元组输入多个参数(例如,scipy 最小化函数的输入结构)。但是,我不知道如何传入依赖于 Pandas DataFrame 的函数。
我在下面创建了一个可重现的示例。
import pandas as pd
import numpy as np
from scipy.stats import norm
from scipy.optimize import minimize
#################### Data ####################
# Initialize dataframe.
data = pd.DataFrame({'id_i': ['AA', 'BB', 'CC', 'XX', 'DD'],
'id_j': ['ZZ', 'YY', 'XX', 'BB', 'AA'],
'y': [0.30, 0.60, 0.70, 0.45, 0.65],
'num': [1000, 2000, 1500, 1200, 1700],
'bar': [-4.0, -6.5, 1.0, -3.0, -5.5],
'mu': [-4.261140, -5.929608, 1.546283, -1.810941, -3.186412]})
data['foo_1'] = …Run Code Online (Sandbox Code Playgroud) 我想将一个数据框与另一个数据框合并,其中合并的条件是日期/时间落在特定范围内.
例如,假设我有以下两个数据框.
import pandas as pd
import datetime
# Create main data frame.
data = pd.DataFrame()
time_seq1 = pd.DataFrame(pd.date_range('1/1/2016', periods=3, freq='H'))
time_seq2 = pd.DataFrame(pd.date_range('1/2/2016', periods=3, freq='H'))
data = data.append(time_seq1, ignore_index=True)
data = data.append(time_seq1, ignore_index=True)
data = data.append(time_seq1, ignore_index=True)
data = data.append(time_seq2, ignore_index=True)
data['myID'] = ['001','001','001','002','002','002','003','003','003','004','004','004']
data.columns = ['Timestamp', 'myID']
# Create second data frame.
data2 = pd.DataFrame()
data2['time'] = [pd.to_datetime('1/1/2016 12:06 AM'), pd.to_datetime('1/1/2016 1:34 AM'), pd.to_datetime('1/2/2016 12:25 AM')]
data2['myID'] = ['002', '003', '004']
data2['specialID'] = ['foo_0', 'foo_1', 'foo_2']
# Show …Run Code Online (Sandbox Code Playgroud) 考虑具有多对点的地图。使用ggplot2,如何将每对点与线段连接起来?
考虑以下可重现的示例。
# Load libraries.
library(ggmap) # for getting map
library(ggplot2) # for plots
# Create data frame of points on the map.
data <- data.frame(p1 = c(1, 3, 5), p2 = c(2, 4, 6),
lat_p1 = c(37.78, 37.75, 37.73),
lon_p1 = c(-122.41, -122.40, -122.405),
lat_p2 = c(37.77, 37.75, 37.72),
lon_p2 = c(-122.43, -122.42, -122.415))
data
p1 p2 lat_p1 lon_p1 lat_p2 lon_p2
1 1 2 37.78 -122.410 37.77 -122.430
2 3 4 37.75 -122.400 37.75 -122.420
3 5 …Run Code Online (Sandbox Code Playgroud) 在pandas中,我想按列中的值对数据进行分组,然后计算每个时间戳与该组中第一个时间戳之间的时间差.
例如,请考虑以下DataFrame:
# Create data.
d = {'foo': ['001', '001', '002', '002', '002'],
'timestamp': ['2015-02-24 19:12:00', '2015-02-24 21:38:00', '2015-02-25 03:41:00', '2015-02-25 03:44:00', '2015-02-25 03:49:00']}
df = pd.DataFrame(d, columns = ['foo', 'timestamp'])
df['timestamp'] = pd.DatetimeIndex(pd.to_datetime(df['timestamp'])).tz_localize('UTC')
>>> print df
foo timestamp
0 001 2015-02-24 19:12:00+00:00
1 001 2015-02-24 21:38:00+00:00
2 002 2015-02-25 03:41:00+00:00
3 002 2015-02-25 03:44:00+00:00
4 002 2015-02-25 03:49:00+00:00
Run Code Online (Sandbox Code Playgroud)
期望的输出是:
foo timestamp output
0 001 2015-02-24 19:12:00+00:00 NaT
1 001 2015-02-24 21:38:00+00:00 02:26:00
2 002 2015-02-25 03:41:00+00:00 NaT
3 002 …Run Code Online (Sandbox Code Playgroud)