gpt4 book ai didi

python - 如何在 pandas 的特定位置添加列?

转载 作者:行者123 更新时间:2023-12-02 18:41:46 25 4
gpt4 key购买 nike

我有这个数据框:

df = pd.DataFrame({'FS':[1,1,2],'FL':[2,3,4],'GS':[5,8,9],'GL':[5,2,4],'JJ':['no','more','math']})
print(df)

FS FL GS GL JJ
0 1 2 5 5 no
1 1 3 8 2 more
2 2 4 9 4 math

我想在循环中的“L”(长)和“S”(短)之间添加列 b/c 该数据帧长 64 列,但在 JJ 列之前停止,该列填充了字符串。我想要对这些列执行的操作是:Ratio = S/(S+L) 所以我的数据框将如下所示:

df = pd.DataFrame({'FS':[1,1,2],'FL':[2,3,4],'FRatio':[0.333,0.25,0.333],\
'GS':[5,8,9],'GL':[5,2,4],'GRatio':[0.5,0.8,0.692],\
'JJ':['no','more','math']})
print(df)

FS FL FRatio GS GL GRatio JJ
0 1 2 0.333 5 5 0.500 no
1 1 3 0.250 8 2 0.800 more
2 2 4 0.333 9 4 0.692 math

我考虑过将数据帧融合为长格式,但每个 S/L 对都是唯一的,我想不出一种方法将它们分开。

最佳答案

使用insert将列放置在您想要的位置。找到给定前缀的“L”列的位置,然后将其放在后面。这假设您的 DataFrame 从一开始就进行了组织,以便“XS”和“XL”列按该顺序成对出现。

您可以手动指定前缀,也可以对“JJ”列之前的所有列使用除最后一个标签字符之外的所有标签字符(即删除“S”或“L”),以通过编程方式确定它们的含义。

prefixes = df.columns[:df.columns.get_loc('JJ')].str[:-1].unique()
#prefixes = ['F', 'G']

for prefix in prefixes:
s = df[f'{prefix}S']/(df[f'{prefix}S'] + df[f'{prefix}L'])
# Location after the 'XL'
loc = df.columns.get_loc(f'{prefix}L')+1
df.insert(loc, f'{prefix}Ratio', s)

   FS  FL    FRatio  GS  GL    GRatio    JJ
0 1 2 0.333333 5 5 0.500000 no
1 1 3 0.250000 8 2 0.800000 more
2 2 4 0.333333 9 4 0.692308 math

关于python - 如何在 pandas 的特定位置添加列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67907721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com