Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 在dataframe中创建每个列的反向并添加前缀_Python 3.x_Pandas - Fatal编程技术网

Python 3.x 在dataframe中创建每个列的反向并添加前缀

Python 3.x 在dataframe中创建每个列的反向并添加前缀,python-3.x,pandas,Python 3.x,Pandas,示例数据帧: df = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]}) 我想将每个现有列的倒数添加到数据框中,并根据带有前缀的现有列名命名它们,例如,inv_a是列a的倒数,等等 生成的数据帧应如下所示: df_inv = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6], "inv_A": [1/1, 1/2, 1/3], "inv_B": [1/4, 1/5, 1/6]}) 很明显,有一些冗余的方法,比

示例数据帧:

df = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]})
我想将每个现有列的倒数添加到数据框中,并根据带有前缀的现有列名命名它们,例如,
inv_a
是列
a
的倒数,等等

生成的数据帧应如下所示:

df_inv = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6], "inv_A": [1/1, 1/2, 1/3], "inv_B": [1/4, 1/5, 1/6]})
很明显,有一些冗余的方法,比如在循环中这样做,但是应该有更多类似python的方法,在搜索了一段时间后,我没有发现任何东西。我知道这很可能是重复的;如果是,请给我一个现有的答案。

试试:

inv\u df=df.join(df.apply(lambda x:1/x)。添加前缀('inv\u'))
或者按照@Erfan的建议,您不需要使用apply:

inv_df = df.join((1/df).add_prefix('inv_'))
这使得:


inv_df
出[70]:
A B投资A投资B
0  1  4  1.000000  0.250000
1  2  5  0.500000  0.200000
2  3  6  0.333333  0.166667

很高兴能为您提供帮助无需在此申请:
df.join((1/df)。添加前缀('inv'))
谢谢@Erfan我不确定这是否可行,我会更新我的答案accordingly@Erfan请将此作为答案发布,否则,请编辑您的答案并确认Erfan。PS它只在df的所有列都是数字的情况下工作。谢谢@smci指出这一点,我只是不认为这是必要的,因为它几乎是重复的: