我正在尝试在 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/