函数,用于使用Python列表中的变量进行数据帧操作
我有一个列表函数,用于使用Python列表中的变量进行数据帧操作,python,function,pandas,numpy,dataframe,Python,Function,Pandas,Numpy,Dataframe,我有一个列表list=['OUT','IN'],其中列表中的所有元素都是数据框中的变量名,并附有后缀\u3m,\u6m,\u9m,15M 名单: 列表=['OUT','IN'] 输入_df: ID OUT_3M OUT_6M OUT_9M OUT_15M IN_3M IN_6M IN_9M IN_15M A 2 3 4 6 2 3 4 6 B 3 3 5 7 3 5 7 C2 3 6 2 3 6 6 D33737 我要解决的问题是减去 1.OUT_6MfromOUT_3M并作为OUT_3M
list=['OUT','IN']
,其中列表中的所有元素都是数据框中的变量名,并附有后缀\u3m,\u6m,\u9m,15M
名单:
列表=['OUT','IN']
输入_df:
ID OUT_3M OUT_6M OUT_9M OUT_15M IN_3M IN_6M IN_9M IN_15M
A 2 3 4 6 2 3 4 6
B 3 3 5 7 3 5 7
C2 3 6 2 3 6 6
D33737
我要解决的问题是减去
1.OUT_6M
fromOUT_3M
并作为OUT_3M-6M
2.OUT_9M
来自OUT_6M
并作为OUT_6M-9M
3.OUT_15M
fromOUT_9M
并作为OUT_9M-15M
同样的操作会重复到列表中的每个元素,同时保留我在示例Output\u df
数据集中提到的OUT\u 3M
和in\u 3M
输出_df:
ID Out_3M Out_3M-6M Out_6M-9M Out_9M-15M IN_3M IN_3M-6M IN_6M-9M IN_9M-15M
A 2 1 2 1 2
B 3 0 2 2 3 0 2 2 2
C2 1 3 0 2 1 3 0
D30403040
列表中有许多元素需要对其执行操作。有没有办法通过编写函数来解决这个问题。谢谢 我不知道你所说的写函数是什么意思,你想做什么,几个for循环还不够吗?比如:
postfixes = ['3M','6M','9M','15M']
prefixes = ['IN','OUT']
# Allocate the space, while also copying _3M
output_df = input_df.copy()
# Rename a few
output_df.rename(columns={'_'.join((prefix, postfixes[i])): '_'.join((prefix, postfixes[i-1] + '-' + postfixes[i]))
for prefix in prefixes for i in range(1, len(postfixes))}, inplace=True)
# Compute the differences
for prefix in prefixes:
for i in range(1,len(postfixes)):
postfix = postfixes[i] + '-' + postfixes[i-1]
output_df['_'.join((prefix, postfix))] = input_df['_'.join((prefix, postfixes[i-1]))].values - input_df['_'.join((prefix, postfixes[i]))].values
输出_df在开始时是输入_df的副本,既可以避免单独处理_3M的情况,也可以预先分配数据帧,而不是一次创建一列(这在代码中并不重要,但如果有数千列,则会浪费时间在内存中移动内容,否则…)
此外,您应该避免将列表称为“list”,否则在您尝试将元组转换为列表时,您会发现一些讨厌的bug