我正在 Jupyter Notebooks 中使用数据框,但遇到了一些困难。数据框由位置组成,这些位置由坐标表示。这些点代表驾驶员在给定日期所采取的路线。
目前有3个栏目;开始、中间或结束。
司机从起点开始新的一天,访问 1 个或多个中间点,并在一天结束时返回终点。起点就像基准位置,因此终点与起点相同。
这是非常基本的,但我在可视化这些数据时遇到了困难。我在想下面这样的事情来帮助改善我的情况:
| Start | Intermediary | End |
| | | | | | |
_________________________________________________________________
| s_lat | s_lng | i_lat | i_lng | e_lat | e_lng |
Run Code Online (Sandbox Code Playgroud)
或者我最好放弃前 3 列(开始、中间、结束)?
我不想按照指南在这里开始讨论,所以我很想了解有关 Python Pandas 的新知识,以及是否有办法改进我当前的方法。
我有一个数据框,我需要在其中按字母顺序对一列(逗号分隔)的内容进行排序:
ID Data
1 Mo,Ab,ZZz
2 Ab,Ma,Bt
3 Xe,Aa
4 Xe,Re,Fi,Ab
Run Code Online (Sandbox Code Playgroud)
输出:
ID Data
1 Ab,Mo,ZZz
2 Ab,Bt,Ma
3 Aa,Xe
4 Ab,Fi,Re,Xe
Run Code Online (Sandbox Code Playgroud)
我试过了:
df.sort_values(by='Data')
Run Code Online (Sandbox Code Playgroud)
但这不起作用
我正在计算 numpy 数组中波峰和波谷的数量。
我有一个像这样的 numpy 数组:
stack = np.array([0,0,5,4,1,1,1,5,1,1,5,1,1,1,5,1,1,5,1,1,5,1,1,5,1,1,5,1,1])
Run Code Online (Sandbox Code Playgroud)
绘制后,这些数据看起来像这样:
我正在寻找这个时间序列中的峰值数量:
这是我的代码,它适用于这样的示例,其中时间序列表示中有明显的波峰和波谷。我的代码返回找到峰值的数组的索引。
#example
import numpy as np
from scipy.signal import argrelextrema
stack =
np.array([0,0,5,4,1,1,1,5,1,1,5,1,1,1,5,1,1,5,1,1,5,1,1,5,1,1,5,1,1])
# for local maxima
y = argrelextrema(stack, np.greater)
print(y)
Run Code Online (Sandbox Code Playgroud)
结果:
(array([ 2, 7, 10, 14, 17, 20, 23, 26]),)
Run Code Online (Sandbox Code Playgroud)
已发现8个清晰的峰,可以正确计数。
我的解决方案似乎不适用于不那么清晰和更混乱的数据。
下面的数组不能很好地工作,也找不到我需要的峰值:
array([ 0. , 5.70371806, 5.21210157, 3.71144767, 3.9020162 ,
3.87735984, 3.89030171, 6.00879918, 4.91964227, 4.37756275,
4.03048542, 4.26943028, 4.02080471, 7.54749062, 3.9150576 ,
4.08933851, 4.01794766, 4.13217794, 4.15081972, 8.11213474,
4.6561735 , 4.54128693, 3.63831552, 4.3415324 , 4.15944019,
8.55171441, 4.86579459, 4.13221943, …Run Code Online (Sandbox Code Playgroud) 我有一份清单清单:
[[0.0,3.3, 4.9, 7.5], [4, 6, 90, 21, 21.1], [3, 43, 99, 909, 2.11, 76, 76.9, 1000]]
Run Code Online (Sandbox Code Playgroud)
如果该子列表包含给定范围之外的元素,我想从列表中删除子列表.
例如; 范围= 3,15
因此,如果子列表包含-69,-17,0,1,2,15.1,26.99,即任何超出该范围的元素,我希望删除该子列表.
应返回的输出是列表列表,其中所有子列表仅包含该范围内的值:
[[6, 5, 7, 13, 12], [4, 6, 10], [9, 9, 4, 5, 11], [4, 4]]
Run Code Online (Sandbox Code Playgroud)
我知道这里有类似的问题,例如:
Python - 从列表列表中删除列表(与.pop()类似的功能)
我无法让这些解决方案起作用.
我的目标是不删除重复的列表:有很多问题,但这不是我的目标.
我的代码:
max_value = 15
min_value = 3
for sublist in my_list:
for item in sublist:
if(item < min_value):
my_list.pop(sublist)
if(item > max_value):
my_list.pop(sublist)
print(my_list)
Run Code Online (Sandbox Code Playgroud)
错误:
TypeError: 'list' object cannot be interpreted as an integer
Run Code Online (Sandbox Code Playgroud) 我有一个数据框,其中包含ID的列。此ID代表一个人,可以多次出现:
col_id col2 col3 col4....
row1 1
row2 1
row3 2
row4 3
row5 3
row6 3
row7 1
row8 7
Run Code Online (Sandbox Code Playgroud)
我需要返回一个新的数据框,其中ID列的value_counts大于2。
新数据框:
col_id col2 col3 col4....
row1 1
row2 1
row3 3
row4 3
row5 3
row6 1
Run Code Online (Sandbox Code Playgroud)
此新数据框包含ID计数仅大于2的行。
编辑
在这里,我需要按ID分隔数据。理想情况下,我想要一个对每个ID都有一个数据框的解决方案:
数据框1
col_id col2 col3 col4....
r1 1
r2 1
r3 1
Run Code Online (Sandbox Code Playgroud)
数据框2
col_id col2 col3 col4....
r1 2
r2 2
r3 2
Run Code Online (Sandbox Code Playgroud)
数据框3
col_id col2 col3 col4....
r1 3
r2 3
r3 3
Run Code Online (Sandbox Code Playgroud)
是否可以将它们合并为一个大数据框?因此,我可以创建一个名为“索引”的新列,其中包含ID == 1,ID == 2等的行: …
我有一个看起来像这样的数据框:
values
[0.0,12.34,223.12,4.55,...]
[0.0,78.12,12.90,...]
.
.
.
Run Code Online (Sandbox Code Playgroud)
我正在尝试计算值列的平均值并将该数字存储在新列中.
此时数据框只保留一列,并且值列中每个数组的长度不严格.
预期产量:
value average
[0.0,12.34,223.12,4.55,...] 77.87
[0.0,78.12,12.90,...] 12.11
.
.
.
Run Code Online (Sandbox Code Playgroud)
当我尝试使用iterrows()遍历数据帧时,Np.mean()将无法工作.
基本上我需要扩展下面的代码来计算数据帧中的所有平均值:
np.mean(df_average_pace.paces[0])
Run Code Online (Sandbox Code Playgroud) 我有一个清单:
sample_list = array([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16])
Run Code Online (Sandbox Code Playgroud)
我想计算每个元素的平均值,比如4元素.但不是4个元素,而是前4个:
1,2,3,4
Run Code Online (Sandbox Code Playgroud)
其次是:
2,3,4,5
Run Code Online (Sandbox Code Playgroud)
其次是:
3,4,5,6
Run Code Online (Sandbox Code Playgroud)
等等.
结果将是第一个列表中每4个元素之间的平均数组或列表.
输出:
array([2.5, 3.5, 4.5, ...])
Run Code Online (Sandbox Code Playgroud)
我的尝试:
sample_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
splits = 4
def avgerage_splits(data):
datasum = 0
count = 0
for num in data:
datasum += num
count += 1
if count == splits:
yield datasum / splits
datasum = count = 0
if count:
yield datasum / count
print(list(average_splits(sample_list)))
[1.5, 3.5, 5.5, 7.5, 9.5, 11.0]
Run Code Online (Sandbox Code Playgroud)
这不是我需要的输出,因为它在移动到一组新的4个元素之前计算每4个元素的平均值.我想只在列表中移动一个元素并计算那些元素的平均值,依此类推.
我有一个这样的数据框:
df1
sample x data data y
b a
d c
f e
h g
j i
l k
Run Code Online (Sandbox Code Playgroud)
我需要像这样创建一个新的数据框:
information identifier
b x
d x
f x
h x
j x
l x
a y
c y
e y
g y
i y
k y
Run Code Online (Sandbox Code Playgroud)
这可以在熊猫中完成吗?这就像将一列堆叠在另一列之上,但要记录该列是什么类型的信息。非常感谢。
我有一个像这样的数据框:
ID CODE GROUP PIN
1 99 A 221
1 89 B 443
2 79 A 230
2 69 A 000
3 59 D 781
3 49 T 665
Run Code Online (Sandbox Code Playgroud)
我想按 ID 列分组并连接所有其他字段,以逗号分隔,因此我得到如下输出:
ID CODE GROUP PIN
1 99,89 A,B 221,443
2 79,69 A,A 230,000
3 59,49 D,T 781,665
Run Code Online (Sandbox Code Playgroud)
我可以按 ID 分组并返回连接的 CODE 字段,但我需要为多个字段执行此操作:
df = DATA.groupby('ID')['CODE'].apply(',' .join).reset_index(drop = False)
Run Code Online (Sandbox Code Playgroud)
这仅返回分组的 ID 字段和串联的 CODE 字段。如何将 groupby 扩展到多列?
非常感谢