很抱歉,标题很模糊,很难解释。更容易展示。你知道吗
我试图减去同一行中的值,但基于其他列中的字符串。这是一个输入数据框:
import pandas as pd
import numpy as np
k = 5
N = 8
d = ({'Time' : np.random.randint(k, k + 100 , size=N),
'Events' : ['ABC','DEF','GHI','JKL','ABC','DEF','GHI','JKL'],
'Number1' : ['xx','xx',1,'xx','xx','xx',2,'xx'],
'Number2' : ['xx',1,'xx',1,'xx',2,'xx',2]})
df = pd.DataFrame(data=d)
输出:
Events Number1 Number2 Time
0 ABC xx xx 14
1 DEF xx 1 34
2 GHI 1 xx 78
3 JKL xx 1 49
4 ABC xx xx 49
5 DEF xx 2 24
6 GHI 2 xx 19
7 JKL xx 2 67
我想基于Time
中的差异导出值。第一个时间差列将是ABC - DEF
,第二个列将是GHI - JKL
。你知道吗
我需要重复这个过程很多次。上面的例子显示了2次循环。我可以对列Number1
和Number2
使用整数,但它们不是按顺序排列的。你知道吗
我尝试合并并填充这些列以显示顺序。然后将此列用作参考。你知道吗
for col in ['Number2']:
df[col] = df[col].ffill()
但当我需要4个整数时,它会产生5个相同的整数。你知道吗
然后,我通过行切片手动减去适当的值,但是当我必须多次这样做时,它变得非常低效。你知道吗
是否可以创建一个减去预期行的循环?你知道吗
对于上述示例,输出为:
Diff_1 Diff_2
0 -20 29
1 25 -48
输出:
这将在
df
中有新的列。我们只关心ABC
和GHI
的行输出:
您可以使用shift轻松地找到像这样排序的
df
的差异。但这其中有很多你不在乎的差异。你想要第0、第4、第8。。。。第一个和第二个,第六个,第十个的区别。。。第二个差异的差异。这很容易用.iloc
实现相关问题 更多 >
编程相关推荐