python - Pandas :根据与另一列名称部分匹配的列值创建新列

标签 python pandas apply

我正在尝试在 Pandas 中创建一个新列。我有一个现有的文本列,我希望这个新列包含另一列中包含的值,其中行值与列名部分匹配。它类似于这个线程,但在我的例子中,我只会有部分匹配:

Python: pandas: match row value to column name/ key's value

以我的表格为例

Field   UKA_rf4 UKB UKDdsdf 
UKA     1       4   54
UKB     2       5   7787    
UKD     97      54  765656  

我希望它看起来像:

Field   UKA_rf4 UKB UKDdsdf      Value
UKA     1       4   54           1
UKB     2       5   7787         5
UKD     97      54  765656       765656   

第一行结果为 1,因为“UKA”包含在列名称“UKA_rf4”中

第二行与列名完全匹配,第三列是部分匹配。

有什么建议吗?

最佳答案

你可以使用列表理解

df = pd.DataFrame({'Fields':['UKA','UKB','UKD'],'UKA_rf4':[1,2,97],'UKB':[4,5,54],'UKDdsdf':[54,7787,765656]})

df = df.set_index('Fields')
df['Values'] = [df[j][index] for index,i in enumerate(df.index) for j in df.columns if i in j]

print(df)

        UKA_rf4  UKB  UKDdsdf  Values
Fields                               
UKA           1    4       54       1
UKB           2    5     7787       5
UKD          97   54   765656  765656

关于python - Pandas :根据与另一列名称部分匹配的列值创建新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56273359/

相关文章:

python - 尝试使用 selenium Python 循环搜索查询时在 find_element_by_partial_link_text() 中出错

python - 我正在用Python编写一个贪吃蛇游戏。但如果我们快速按下 2 个按钮,则一次需要执行两个命令。我能做什么来预防它?

python - 如何让Django中的选择字段不显示所有数据,而仅显示与选择字段相关的数据?

python - Pandas 转换类型并将无效值设置为 na

javascript - Angular JS View 尚未正确更新

r - 将函数应用于 R 中嵌套列表的某些元素

python - 我如何安装cython

python - 如何将DataFrame保存到xlsx文件中的Sheet2中

python - 绘制多个散点图 Pandas

r - 在循环内创建新列或应用