python - Pandas DF 列数据拆分
问题描述
我有一个 Pandas DataFrame(如下所示)
Room_ID Chamber_ID Floor_Name
----------- ------------ ------------------------
111,222 9
111 9
None 1
111,222,333 1
还有一个功能
def GetFloorName(Room_ID, Chamber_ID):
THis Will Return the Floor_Name
DF 中的这些数据必须在每一行中一个一个地推送到函数中,就像在第一行中一样
the Data is 111,222 in Room_ID and 9 in Chamber_id```
所以函数调用应该像
GetFloorName(111,9) which will return a Value (For Eg: X)
GetFloorName(222,9) which will return a Value (For Eg: Y)
现在这两个值都需要以Floor_Name
逗号分隔更新,如下所示:
预期输出 DF
Room_ID Chamber_ID Floor_Name
----------- ------------ ------------------------
111,222 9 X,Y
111 9
None 1
111,222,333 1
如何使用熊猫做到这一点?
解决方案
我认为您正在寻找的是 df.appy()
# Your function would look like this
def GetFloorName(Room_ID, Chamber_ID):
# Return None If Room_ID is None
if Room_ID is None:
return None
floor = []
#split by comma and loop over all
for z in Room_ID.split(','):
floor.append(sqlcall(z,Chamber_ID))
return ','.join(floor)
#dummy sqlcall
def sqlcall(f,z):
if z>5:
return X
else:
return Y
#apply the function on the series
df['Floor_Name'] = df.apply(lambda x: GetFloorName(x.Room_ID, x.Chamber_ID),axis=1)
推荐阅读
- javascript - 不能在嵌套的 for 循环中使用 .insertAdjacentHTML
- python - 如何使用 Base64 字符串或字节数组设置 QLabel
- java - 每当单击 toggleButton 时都会调用 onActivityCreated
- r - 动态添加列和列名
- tfs - 如何使用非默认参数值触发 TFS vNext 拉取请求验证构建?
- purescript - 在 purescript 中解码联合类型
- python - 您如何在 CSV 文件的标题栏中写入内容?
- java - 如果方法参数是原始 int,那么方法内循环内的 myArrayList.contains(primitiveArg) 效率极低还是可以?
- node.js - 运行-p:找不到命令
- ajax - 如何使用 Ajax 将数据传递给 Django 中的模式?