标签: shift

如何在 pandas 数据框中使用“df.shift(n)”,以便可以将“n”项从下到上而不是“nan”值,反之亦然?

我有一个包含 5 行和 2 列的 pandas 数据框df

A   B
0   10  0
1   20  5
2   30  10
3   40  15
4   50  20
Run Code Online (Sandbox Code Playgroud)

df.to_dict()回报

{'A': {0: 10, 1: 20, 2: 30, 3: 40, 4: 50},
 'B': {0: 0, 1: 5, 2: 10, 3: 15, 4: 20}}
Run Code Online (Sandbox Code Playgroud)

对于 A 列,我想将每个项目移动到下面两行。我不想将nan值放在顶部,而是想将两个从底部推出的元素带到顶部。

对于 B 列,我想做相反的事情 - 将每个项目移到上面两行。我不想将nan值放在底部,而是希望将两个元素从顶部推出到底部。

我可以使用df["A"].shift(2)df["B"].shift(-2)。但是,我得到了 nan 值。

我的预期结果是:

A   B
0   40  10
1   50  15
2   10 …
Run Code Online (Sandbox Code Playgroud)

python shift dataframe python-3.x pandas

1
推荐指数
1
解决办法
65
查看次数

bash脚本根据最终参数对每个参数执行操作

假设您要创建一个bash不支持任何选项但脚本不同的脚本cp,因为cp系统提供的脚本不接受多个源.

系统的用法(假设和破坏)cp是:

cp source target    # target may be a directory
Run Code Online (Sandbox Code Playgroud)

脚本的用法是:

cp.sh source... target    # target must be a directory
Run Code Online (Sandbox Code Playgroud)

这是脚本的起点:

#!/bin/bash
tgt="$1"
shift
for src in "$@"; do
    echo cp $src $tgt
done
Run Code Online (Sandbox Code Playgroud)

当使用参数" a b c d"(注意它d是目标)运行时,它输出:

cp b a
cp c a
cp d a
Run Code Online (Sandbox Code Playgroud)

目标是修复脚本以输出它,同时保持代码简单:

cp a d
cp b d
cp c d
Run Code Online (Sandbox Code Playgroud)

bash arguments shift

0
推荐指数
1
解决办法
1793
查看次数

Perl:Sub的论点解释

在perl中所有sub的参数写入@_数组,如下所示:

call_any_sub($a,$b,$c);
sub call_any_sub {
  my $s_a = shift;
  my $s_b = shift;
  my $s_c = shift;
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我想将数组作为参数传递给sub,我应该使用:

call_any_sub(@data_array);
sub call_any_sub {
  my @data = @_;
}
Run Code Online (Sandbox Code Playgroud)

而不是类似的:

call_any_sub(@data_array);
sub call_any_sub {
  my @data = shift;
}
Run Code Online (Sandbox Code Playgroud)

那么,为什么@data_array会替换参数数组而不是写入(正如预期的那样)?

perl arguments function shift

0
推荐指数
1
解决办法
203
查看次数

转移和拆分

我想让这个2命令更短,如果可能的话,1行.

my $id = shift;
my @splittedID = split(" ", $id);
return $splittedID[0];
Run Code Online (Sandbox Code Playgroud)

但它应该具有相同的功能.谢谢

perl split shift

0
推荐指数
1
解决办法
856
查看次数

数组三的移位元素在java中向左移动

在我的java程序中,我有一个长度为5的数组,我想将数组的内容向左移动3个位置.例如[1,2,3,4,5]将成为[4,5,1,2,3].最好的方法是什么?谢谢

java arrays elements shift

0
推荐指数
1
解决办法
1296
查看次数

如何在java中将int移位4n?

所以例如有一个功能:

public int shift4N(int num, int n)
{
    num = num << n << n << n << n;
    return num;
}
Run Code Online (Sandbox Code Playgroud)

是否有一个不那么冗余的方法呢?虽然不允许乘法......

任何帮助将不胜感激 :)

java shift

0
推荐指数
1
解决办法
68
查看次数

为什么在实践中向右移位会在霓虹灯和SSE中向左移位(反之亦然)?

(注意,在Neon我使用这种数据类型以避免处理16位数据类型之间的转换)

为什么实践中"内移"中的"左移"是"向右移"?

// Values contained in a
// 141 138 145 147 144 140 147 153 154 147 149 146 155 152 147 152
b = vshlq_n_u32(a,8);
// Values contained in b
// 0 141 138 145 0 144 140 147 0 154 147 149 0 155 152 147
b = vshrq_n_u32(a,8);
// Values contained in b
// 138 145 147 0 140 147 153 0 147 149 146 0 152 147 152 0
Run Code Online (Sandbox Code Playgroud)

我记得在使用时会发现相同的情况_mm_slli_si128(虽然不同但是换班后的结果如下所示:

// …
Run Code Online (Sandbox Code Playgroud)

c++ sse shift intrinsics neon

0
推荐指数
1
解决办法
357
查看次数

在perl脚本中使用$ self创建实例时出错

我尝试在perl脚本中创建一个对象.因此我有一个构造函数

new(;@)
{
     my $class = shift;
     my $self = {};
     bless $self, $class;
     $self->_init(@_);
     return $self;
}
Run Code Online (Sandbox Code Playgroud)

和我的_init(;@)功能,初始化对象

my $self = shift;
if( @_ )
{
    my %extra = @_;
    @$self{keys %extra} = values %extra;
}
return;
Run Code Online (Sandbox Code Playgroud)

我使用这两个功能的方式是错误的吗?我用两条线开始每隔一个子线

my $self = shift;
croak "instance method called for class" unless ref $self;
Run Code Online (Sandbox Code Playgroud)

但是我每次使用它时都会得到syntax/ String found where operator expected错误.

因此我的问题是:我是否正确使用这两种功能?我一直认为我只需要$self像我一样初始化一次,并且可以为脚本的其余部分指出我想要的一切.

perl attributes self shift

0
推荐指数
1
解决办法
50
查看次数

为什么我不能使用int的第一位?

我试图使用int的所有位生成一个随机数.当我使用rand()函数时,它似乎永远不会使用第一位,所以我试图把整个东西移到一个地方.但是,当我尝试打印新移位的数字时,它总是打印4294967295,所以我猜这是一个溢出.为什么我不能使用那个位呢?有办法吗?

如果没有使用第一位,它就可以正常工作(打印是在随机数移位之前和之后):

00000100001100111111001010010111
00001000011001111110010100101110
Run Code Online (Sandbox Code Playgroud)

但如果需要第一位,则会发生以下情况:

01010110100001110011110011011111
42949672950101101000011100111100110111110
Run Code Online (Sandbox Code Playgroud)

请帮忙!!它在技术上有效,它只是先输出数字......

 typedef struct{
    int blocks[NUM_BLOCKS];
} WWord;

void printbits(unsigned int n){
    int i;
    //printf("%u = ",n);
    for(i=SIZE_OF_INT*SIZE_OF_BYTE-1;i>=0;i--){
        int mask = 1<<i;
        int maskedn = n&mask;
        int thebit = maskedn >> i;
        printf("%u",thebit);
    }
    printf("\n");
}

void fillword(WWord *word){
    int i;
    for(i=0; i<NUM_BLOCKS;i++){
        unsigned int ran = rand();
        printbits(ran);
        ran = ran<<1;
        printbits(ran);
        word->blocks[i] = ran;
        //word->blocks[i]<<1;
        printf("\n");
    }
}
Run Code Online (Sandbox Code Playgroud)

c bit-manipulation shift

0
推荐指数
1
解决办法
166
查看次数

如何发送左移键?

我正在尝试将密钥发送到Firefox中的另一个打开过程.我应该发送左Shift键,但这没有任何运气.

我试过谷歌搜索这些答案,但我最终得到的是使用掘金或使用常规班次的人的外部方法.我尝试了很多方法使用左移的Enum发送左移或Sendkey.Send("{LSHIFT}")更多,但没有一个对我有效.我想知道是否有任何合适的方式让我发送左Shift键.

到目前为止这是我的代码:

public static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
{
    if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN)
    {
        int vkCode = Marshal.ReadInt32(lParam);
        Keys pressed = (Keys)vkCode;
        MessageBox.Show(pressed.ToString());
        switch (pressed)
        {
            case Keys.Insert:
                {
                    SendKeys.Send("{LSHIFT}");
                }
            break;
        }
    }
    return CallNextHookEx(_hookID, nCode, wParam, lParam);
}
Run Code Online (Sandbox Code Playgroud)

我看过没有左移键的列表和列表,但无论哪种方式,它们都会弹出错误'无效键'.

谢谢.

c# key shift

0
推荐指数
1
解决办法
109
查看次数