gpt4 book ai didi

python - 使用循环或 lambda 在多个数据框中添加具有相同字符串值的列的更有效方法?

转载 作者:行者123 更新时间:2023-12-03 14:06:42 25 4
gpt4 key购买 nike

我想在我的 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
最终,我想将这 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)

最佳答案

您可以使用 pd.concatkeys然后参数 reset_index :

pd.concat([df0,df1,df2,df3], keys=['df0', 'df1', 'df2', 'df3']).reset_index(level=0) 
MCVE:
df0  = pd.DataFrame(np.ones((3,3)), columns=[*'ABC'])
df1 = pd.DataFrame(np.zeros((3,3)), columns=[*'ABC'])
df2 = pd.DataFrame(np.zeros((3,3))+3, columns=[*'ABC'])
df3 = pd.DataFrame(np.zeros((3,3))+4, columns=[*'ABC'])

df_out = pd.concat([df0,df1,df2,df3], keys=['df0', 'df1', 'df2', 'df3']).reset_index(level=0)
df_out
输出:
  level_0    A    B    C
0 df0 1.0 1.0 1.0
1 df0 1.0 1.0 1.0
2 df0 1.0 1.0 1.0
0 df1 0.0 0.0 0.0
1 df1 0.0 0.0 0.0
2 df1 0.0 0.0 0.0
0 df2 3.0 3.0 3.0
1 df2 3.0 3.0 3.0
2 df2 3.0 3.0 3.0
0 df3 4.0 4.0 4.0
1 df3 4.0 4.0 4.0
2 df3 4.0 4.0 4.0

关于python - 使用循环或 lambda 在多个数据框中添加具有相同字符串值的列的更有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62780290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com