[英]Pandas create df that is the product of columns in another df
I have the following pandas dataframe: 我有以下熊猫数据框:
id | a | b | c | d
------------------
0 | 1 | 3 | 4 | 5
1 | 2 | 3 | 5 | 6
and I would like to create a new df of which its columns is the difference of successive columns in the first df 我想创建一个新的df,其列是第一个df中连续列的差
new df: 新df:
id | b-a | c-b | d-c
--------------------
0 | 2 | 1 | 1
1 | 1 | 2 | 1
Thank you 谢谢
You can use sub
with shift
, for remove first column iloc
: 您可以将
sub
与shift
一起使用,以删除第一列iloc
:
df = df.set_index('id')
df = df.sub(df.shift(axis=1)).iloc[:, 1:].reset_index()
print (df)
id b c d
0 0 2.0 1.0 1.0
1 1 1.0 2.0 1.0
If need convert to int
: 如果需要转换为
int
:
df = df.set_index('id')
df = df.sub(df.shift(axis=1)).iloc[:, 1:].astype(int).reset_index()
print (df)
id b c d
0 0 2 1 1
1 1 1 2 1
For changed column names: 对于更改的列名:
df = df.set_index('id')
cols = df.columns
df = df.sub(df.shift(axis=1)).iloc[:, 1:].astype(int)
df.columns = cols[1:] + '-' + cols[:-1]
df = df.reset_index()
print (df)
id b-a c-b d-c
0 0 2 1 1
1 1 1 2 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.