我有一个看起来像这样的数据框:
<store>
@type elasticsearch
host x.x.x.x
index_name test.%Y%m
<buffer tag, time>
timekey 1h
</buffer>
flush_interval 5s
</store>
我尝试将第一,第二,第三,第四,第五和第六列增加多个,但找不到解决方案。我尝试获取这样的数据框:
A B C D E F
0 1 2 3 1 4
2 1 4 3 2 4
3 1 2 1 1 2
答案 0 :(得分:5)
pandas
中的一个常见技巧是使用下限划分按每个n
值进行分组。沿axis=1
执行此操作以获取所需的输出。
n = 2
df.groupby(np.arange(df.shape[1]) // n, axis=1).prod()
0 1 2
0 0 6 4
1 2 12 8
2 3 2 2
答案 1 :(得分:5)
跨度为2并相乘的切片。此解决方案针对N = 2进行了优化(并假定列数为偶数)。
df.iloc[:, ::2] * df.iloc[:, 1::2].values
A C E
0 0 6 4
1 2 12 8
2 3 2 2
答案 2 :(得分:4)
shift
我将reindex
做什么
df.shift(-1,axis=1).mul(df).reindex(columns=df.columns[::2])
Out[12]:
A C E
0 0.0 6.0 4.0
1 2.0 12.0 8.0
2 3.0 2.0 2.0
答案 3 :(得分:2)
尝试:
pd.concate([df.iloc[:,i]*df.iloc[:,i+1] for i in range(0,len(df.columns),2)],
axis=1)