Blu*_*ail 6 python lambda loops python-3.x pandas
我想在我的 8 个类似数据框中的每一个中添加一个新列 Category。此列中的值相同,它们也是 df 名称,如df1_p8本例中所示。我用过了:
In: df61_p8.insert(3,"Category","df61_p8", True)
# or simply, df61_p8['Category']='df61_p8'
Out:
code violation_description Category
89491 9-1-503 Defective or obstructed duct system one- building df61_p8
102045 9-1-503 Defective or obstructed duct system one- building df61_p8
103369 9-1-503 Defective or obstructed duct system one- building df61_p8
130440 9-1-502 Failure to maintain at least one (1) elevator df61_p8
132446 9-1-503 Defective or obstructed duct system one- building df61_p8
Run Code Online (Sandbox Code Playgroud)
最终,我想将这 8 个数据帧附加/连接到一个数据帧中。
我想知道是否有更有效的方法来做到这一点,而不是在每个数据帧上一一使用 .insert 。像循环或 lambdas 之类的东西..作为初学者,我不确定如何在我的情况下应用它们?谢谢你。
append_alldfs = []
x=[df61_p1,df61_p2,df61_p3,df61_p4,df61_p5,df61_p6,df61_p7,df61_p8]
lambdafunc = lambda x: x.insert(3,"Category","x",True)
Run Code Online (Sandbox Code Playgroud)
小智 2
保持简单和明确。
for col_val, df in [
('df61_p1', df61_p1),
('df61_p2', df61_p2),
('df61_p3', df61_p3),
('df61_p4', df61_p4),
('df61_p5', df61_p5),
('df61_p6', df61_p6),
('df61_p7', df61_p7),
('df61_p8', df61_p8),
]:
df['Category'] = col_val
Run Code Online (Sandbox Code Playgroud)
虽然肯定有更多的“元编程”方法可以完成相同的任务,但这些方法通常非常复杂,并且难以理解和重构。
然而,考虑到这段代码的结构,我想在你到达这一点之前,你可以通过一些方法来解决这个问题。
例如,这些数据帧在什么时候被分割?也许从一开始就不使用单独的数据帧[将原始数据帧放在一起/在开始时连接](并根据需要使用 apply、groupby、pivot 和melt 操作),您可以完全避免此问题。
| 归档时间: |
|
| 查看次数: |
121 次 |
| 最近记录: |