你能用两个不同的列作为参数创建一个python pandas函数吗?
我有一个函数,如果两列的值在同一范围内,则返回1.否则返回0:
def segmentMatch(RealTime, ResponseTime):
if RealTime <= 566 and ResponseTime <= 566:
matchVar = 1
elif 566 < RealTime <= 1132 and 566 < ResponseTime <= 1132:
matchVar = 1
elif 1132 < RealTime <= 1698 and 1132 < ResponseTime <= 1698:
matchVar = 1
else:
matchVar = 0
return matchVar
Run Code Online (Sandbox Code Playgroud)
我希望第一个参数,RealTime
是我的数据框中的一列,这样该函数将获取该列中每行的值.例如RealTime
是df['TimeCol']
,第二个参数是df ['ResponseCol']`.我希望结果成为数据框中的新列.我遇到了几个 已回答类似问题的线程,但看起来这些参数是变量,而不是数据帧行中的值.
我尝试了以下但它不起作用:
df['NewCol'] = df.apply(segmentMatch, args=(df['TimeCol'], df['ResponseCol']), axis=1)
Run Code Online (Sandbox Code Playgroud) 我有一个两列numpy数组.我想通过第2列的每一行,并取每组2个数字(9.6-0,19.13-9.6等)之间的差异.如果差值> 15,我想为两列插入一行0.我真的只需要在第一列中结束值(我只需要第二列来确定将0放在哪里),所以如果更容易将它们拆分,那就没问题了.
这是我的输入数组:
[[0.00 0.00]
[1.85 9.60]
[2.73 19.13]
[0.30 28.70]
[2.64 38.25]
[2.29 47.77]
[2.01 57.28]
[2.61 66.82]
[2.20 76.33]
[2.49 85.85]
[2.55 104.90]
[2.65 114.47]
[1.79 123.98]
[2.86 133.55]]
Run Code Online (Sandbox Code Playgroud)
它应该变成:
[[0.00 0.00]
[1.85 9.60]
[2.73 19.13]
[0.30 28.70]
[2.64 38.25]
[2.29 47.77]
[2.01 57.28]
[2.61 66.82]
[2.20 76.33]
[2.49 85.85]
[0.00 0.00]
[2.55 104.90]
[2.65 114.47]
[1.79 123.98]
[2.86 133.55]]
Run Code Online (Sandbox Code Playgroud) 我有一个包含主题 # 映射的文本文件 (subject_ID_dict.csv),如下所示:
30704 703
30705 849
30714 682
30720 699
30727 105
30729 708
30739 707
30757 854
30758 710
30763 724
30771 715
30773 99
30777 719
30779 717
30798 728
30805 732
30809 727
30831 734
30838 736
30868 735
30908 742
30929 115
30942 747
30944 743
30993 745
31006 116
31018 113
31040 758
31055 756
31057 755
31058 754
31068 760
31091 885
31147 764
31193 765
31196 767
31202 766
31209 117 …
Run Code Online (Sandbox Code Playgroud) 我有以下列表,我想排序:
['104.900209904', '238.501860857', '9.59893298149', '362.470027924', '419.737339973']
我用"排序"函数来做到这一点:
Block1_Video1 = sorted(Block1_Video1)
Run Code Online (Sandbox Code Playgroud)
但是,这就是我得到的:
['104.900209904', '238.501860857', '362.470027924', '419.737339973', '9.59893298149']
Run Code Online (Sandbox Code Playgroud)
虽然这是我想要的(一个列表按数字排序,考虑小数点):
[''9.59893298149', 104.900209904', '238.501860857', '362.470027924', '419.737339973']
Run Code Online (Sandbox Code Playgroud)
我怎么能做到这一点?