我有一个以下数据框df,其中包含两列"identifier","values"和"subid":
identifier values subid
0 1 101 1
1 1 102 1
2 1 103 2 #index in list x
3 1 104 2
4 1 105 2
5 2 106 3
6 2 107 3
7 2 108 3
8 2 109 4 #index in list x
9 2 110 4
10 3 111 5
11 3 112 5
12 3 113 6 #index in list x
Run Code Online (Sandbox Code Playgroud)
我有一个索引列表,比方说
x = [2, 8, 12]
Run Code Online (Sandbox Code Playgroud)
我想在列表x中提到的索引之前插入行.例如,对于在索引2之前插入的行,将具有以下值,它将具有与索引2处的行相同的标识符 …
在一些复杂的操作之后,获得结果列表,例如list1,它是不同数组的列表.
以下是list1
In [] : list1
Out [] :
[array([ 10.1]),
array([ 13.26]),
array([ 11.0 , 12.5])]
Run Code Online (Sandbox Code Playgroud)
想要将此列表转换为简单的列表列表而不是数组
预期清单2
[ [ 10.1],
[ 13.26],
[ 11.0 , 12.5] ]
Run Code Online (Sandbox Code Playgroud)
如果有任何不清楚的地方,请告诉我.
我正在处理以下数据框(仅用于说明,实际df非常大):
seq x1 y1
0 2 0.7725 0.2105
1 2 0.8098 0.3456
2 2 0.7457 0.5436
3 2 0.4168 0.7610
4 2 0.3181 0.8790
5 3 0.2092 0.5498
6 3 0.0591 0.6357
7 5 0.9937 0.5364
8 5 0.3756 0.7635
9 5 0.1661 0.8364
Run Code Online (Sandbox Code Playgroud)
尝试为上述坐标绘制多个折线图(x为"x1对y为"y1").
具有相同"seq"的行是一条路径,并且必须被绘制为一条单独的线,就像对应于seq = 2的所有x,y坐标属于一条线,依此类推.
我能够绘制它们,但是在单独的图形上,我想要在同一图表上的所有行,使用子图,但不能正确.
import matplotlib as mpl
import matplotlib.pyplot as plt
%matplotlib notebook
df.groupby("seq").plot(kind = "line", x = "x1", y = "y1")
Run Code Online (Sandbox Code Playgroud)
这将创建100个图形(等于唯一seq的数量).建议我获取同一图表上所有行的方法.
**更新*
为解决上述问题,我实现了以下代码:
fig, ax = plt.subplots(figsize=(12,8))
df.groupby('seq').plot(kind='line', x = …Run Code Online (Sandbox Code Playgroud) 我有一个 df ,其中有两列uid和p,我想向现有 df 添加一个新列,或者使用附加列创建一个全新的 df ,该附加列的值基于列“uid”和索引列表的值X:
x = [2, 9, 12]
x 包含我应该生成新 id 的索引,新 id 是以前的 id 的增量。因此,将有两种情况,每当遇到列表 x 中的索引时,都会生成新的 id,每当uid列中的 id 发生更改时,都会再次生成新的 id,如下所示:
uid expected_newid p
0 1 1 10
1 1 1 23
2 1 2 20 #new id generated at index 2
3 1 2 40
4 2 3 21 #newid generated as "uid" changes
5 2 3 89
6 2 3 45
7 3 4 50 …Run Code Online (Sandbox Code Playgroud) 我有以下列表的示例列表:
In [] : list1
Out [] :
[[1.0],
[2.1],
[3.3, 5.5, 0.69],
[0.69, 0.9]]
Run Code Online (Sandbox Code Playgroud)
我想只提取元素数量相等且大于2的子列表,并希望将它们存储在数据框中.
所以,我希望df如下所示:
In [] : df
Out [] :
seq_no items
1 3.3 , 5.5, 0.69
2 0.69, 0.9
Run Code Online (Sandbox Code Playgroud)
尝试:
item for item in list1 where(len(item) >2)
Run Code Online (Sandbox Code Playgroud)
显示错误.
如果有任何不清楚的地方,请告诉我.
我有一个以下数据框,它是使用以下代码获得的:
df1=df.groupby('id')['x,y'].apply(lambda x: rdp(x.tolist(), 5.0)).reset_index()
Run Code Online (Sandbox Code Playgroud)
请参考这里
得到的结果数据框:
id x,y
0 1 [(0, 0), (1, 2)]
1 2 [(1, 3), (1, 2)]
2 3 [(2, 5), (4, 6)]
Run Code Online (Sandbox Code Playgroud)
有可能得到这样的东西:
id x,y
0 1 (0, 0)
1 1 (1, 2)
2 2 (1, 3)
3 2 (1, 2)
4 3 (2, 5)
5 3 (4, 6)
Run Code Online (Sandbox Code Playgroud)
这里,作为先前df的结果获得的坐标列表被分成相对于它们各自的id的新行.
我有轨迹数据,其中每个轨迹由一系列坐标(x,y点)组成,每个轨迹由唯一ID标识.
这些轨迹位于 x-y 平面,我想将整个平面划分为相等大小的网格(方形网格).该网格显然是不可见的,但用于将轨迹划分为子段.每当轨迹与网格线相交时,它就会在那里被分段并成为带有new_id的新子轨迹.
我已经包含了一个简单的手工图表,以明确我的期望.
可以看出轨迹如何在网格线的交叉点处被划分,并且这些段中的每一个都具有新的唯一id.
我正在研究Python,并寻找一些python实现链接,建议,算法,甚至是伪代码.
如果有任何不清楚的地方,请告诉我.
UPDATE
为了将平面划分为网格,单元索引的完成如下:
#finding cell id for each coordinate
#cellid = (coord / cellSize).astype(int)
cellid = (coord / 0.5).astype(int)
cellid
Out[] : array([[1, 1],
[3, 1],
[4, 2],
[4, 4],
[5, 5],
[6, 5]])
#Getting x-cell id and y-cell id separately
x_cellid = cellid[:,0]
y_cellid = cellid[:,1]
#finding total number of cells
xmax = df.xcoord.max()
xmin = df.xcoord.min()
ymax = df.ycoord.max()
ymin = df.ycoord.min()
no_of_xcells = math.floor((xmax-xmin)/ 0.5)
no_of_ycells …Run Code Online (Sandbox Code Playgroud) python ×7
pandas ×5
dataframe ×4
list ×2
numpy ×2
algorithm ×1
arrays ×1
grid ×1
intersection ×1
matplotlib ×1