我有一个包含 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) 假设您要创建一个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) 在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会替换参数数组而不是写入(正如预期的那样)?
我想让这个2命令更短,如果可能的话,1行.
my $id = shift;
my @splittedID = split(" ", $id);
return $splittedID[0];
Run Code Online (Sandbox Code Playgroud)
但它应该具有相同的功能.谢谢
在我的java程序中,我有一个长度为5的数组,我想将数组的内容向左移动3个位置.例如[1,2,3,4,5]将成为[4,5,1,2,3].最好的方法是什么?谢谢
所以例如有一个功能:
public int shift4N(int num, int n)
{
num = num << n << n << n << n;
return num;
}
Run Code Online (Sandbox Code Playgroud)
是否有一个不那么冗余的方法呢?虽然不允许乘法......
任何帮助将不胜感激 :)
(注意,在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) 我尝试在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像我一样初始化一次,并且可以为脚本的其余部分指出我想要的一切.
我试图使用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) 我正在尝试将密钥发送到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)
我看过没有左移键的列表和列表,但无论哪种方式,它们都会弹出错误'无效键'.
谢谢.