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指出这一点,我只是不认为这是必要的,因为它几乎是重复的: