连接数据帧列表并将原始数据帧名称包括为关键帧



我有代码可以创建具有相同结构的数据帧列表。我的愿望是将所有这些数据帧附加在一起,但在新的数据帧中添加一列,以标识行最初来自哪个数据帧。

我很容易地在数据帧列表中添加了:

import pandas as pd
df_rosters = pd.concat(list_of_rosters)

然而,我还不知道如何添加具有原始数据帧名称或索引的列。我发现了一堆建议使用keys自变量的例子;但是每个例子都有硬编码的密钥。我的列表的大小不断变化,所以我需要弄清楚如何动态添加密钥。

提前感谢!

让我们为列表中的每个DataFrameassign一个指示符列。(名称可以与DataFrames列表压缩在一起,也可以由类似enumerate的东西创建):

enumerate

pd.concat(d.assign(df_name=f'{i:02d}') for i, d in enumerate(list_of_rosters))
0  1 df_name
0  4  7      00
1  7  1      00
2  9  5      00
0  8  1      01
1  1  8      01
2  2  6      01

或使用zip:

pd.concat(d.assign(df_name=name)
for name, d in zip(['name1', 'name2'], list_of_rosters))
0  1 df_name
0  4  7   name1
1  7  1   name1
2  9  5   name1
0  8  1   name2
1  1  8   name2
2  2  6   name2

设置:

import numpy as np
import pandas as pd
np.random.seed(5)
list_of_rosters = [
pd.DataFrame(np.random.randint(1, 10, (3, 2))),
pd.DataFrame(np.random.randint(1, 10, (3, 2)))
]

list_of_rosters:

[   0  1
0  4  7
1  7  1
2  9  5,    
0  1
0  8  1
1  1  8
2  2  6]

相关内容

  • 没有找到相关文章

最新更新