pandas 如何在python Dataframe 中通过组合字符串和另一个变量来调用列?

vwoqyblh  于 2022-12-16  发布在  Python
关注(0)|答案(2)|浏览(95)

假设我有一个包含以下变量和值的 Dataframe :
| 识别号|体重|LR重量|UR重量|年龄|LS年龄|美国年龄|身高|LS高度|美国身高|
| - ------|- ------|- ------|- ------|- ------|- ------|- ------|- ------|- ------|- ------|
| 1个|六十三|五十|八十|二十个|十八|二十一|一百六十五|一百六十|一百七十五|
| 第二章|七十五|五十|八十|二十二|十八|二十一|一百七十二|一百六十|一百七十|
| 三个|四十九|四十五|八十|十七|十八|二十一|一百八十|一百六十|一百八十|
我想创建以下附加变量:
| 识别号|标志_重量|标志_年龄|标志_高度|
| - ------|- ------|- ------|- ------|
| 1个|1个|1个|1个|
| 第二章|1个|无|无|
| 三个|1个|无|1个|
这些标志表示主变量值(例如:体重、年龄和身高)在相应的下限或上限之间,下限或上限可能以不同的2位数字开始(在此 Dataframe 中,我给出了四个示例:LR,UR,LS,US,但在我的真实的 Dataframe 中我有更多),并且它们的极限值有时随ID而不同。
你能帮我做这些旗子吗?
先谢谢你。

nbysray5

nbysray51#

因此,如果我理解正确的话,您需要使用这些新变量添加列,最简单的解决方案是df.insert()
你可以把它做成这样:
df.insert(number of column after which you want to insert the new column, name of the column, values of the new column)
你可以用任何你能想到的方法来构造新的值,比如复制一列或者简单的数学运算,比如+,-,*,/,都可以,但是你也可以apply一个完整的函数,它会根据你的条件返回标志作为新列的值。
如果新的列n可以被追加,你甚至可以像这样创建一个新列:

df['new column name'] = any values you want

希望这能帮上忙。

bvjxkvbb

bvjxkvbb2#

您可以使用临时MultiIndex

(df.set_index('ID')
   .pipe(lambda d: d.set_axis(pd.MultiIndex.from_frame(
                     d.columns.str.extract('(^[LU]?).*?\s*(\S+)$')),
                              axis=1)
        )
   .stack()
   .assign(flag=lambda d: d[''].between(d['L'], d['U']).astype(int))
   ['flag'].unstack().add_prefix('Flag_').reset_index()
)

输出:

ID  Flag_Age  Flag_Height  Flag_Weight
0   1         1            1            1
1   2         0            0            1
2   3         0            1            1

相关问题