添加指示器以通知数据来自Python的位置
非常感谢你的阅读 我有一个熊猫数据帧,它是多个较小数据帧串联的结果。我想做的是在我的最终数据框中添加多个指示符列,这样我就可以看到每一行来自哪个更小的数据框 这将是我期望的结果:添加指示器以通知数据来自Python的位置,python,pandas,concatenation,indicator,Python,Pandas,Concatenation,Indicator,非常感谢你的阅读 我有一个熊猫数据帧,它是多个较小数据帧串联的结果。我想做的是在我的最终数据框中添加多个指示符列,这样我就可以看到每一行来自哪个更小的数据框 这将是我期望的结果: Forename Surname Ind_1 Ind_2 Ind_3 Ind_4 jon smith 0 0 0 1 charlie jim 1 0 0 1
Forename Surname Ind_1 Ind_2 Ind_3 Ind_4
jon smith 0 0 0 1
charlie jim 1 0 0 1
ian james 0 1 0 0
例如,“Jon Smith”来自数据帧4,“Charlie Jim”来自数据帧1和4(重复行)
对于仅来自一个数据帧的行(例如第1行和第3行),我能够实现这一点,但对于来自多个数据帧的重复行(例如第2行),我无法实现这一点
非常感谢您的帮助。您可以使用:
- 首先使用参数
s识别数据帧键
- 对于来自多索引的列
- 并加入指标
- 通过以下方式创建指标:
- 如果需要为缺少的类别追加0列
- 对于
索引中的列
通过所有列使用
groupby
更通用的解决方案:
df = pd.concat(dfs, keys=inds)
print (df)
Forename Surname
Ind_1 0 charlie jim
Ind_2 0 ian james
Ind_4 0 charlie jim
1 jon smith
df1 =(df.reset_index()
.groupby(df.columns.tolist())['level_0']
.apply('|'.join)
.str.get_dummies()
.reindex(columns=inds, fill_value=0)
.reset_index())
print (df1)
Forename Surname Ind_1 Ind_2 Ind_3 Ind_4
0 charlie jim 1 0 0 1
1 ian james 0 1 0 0
2 jon smith 0 0 0 1
df = pd.concat(dfs, keys=inds)
print (df)
Forename Surname
Ind_1 0 charlie jim
Ind_2 0 ian james
Ind_4 0 charlie jim
1 jon smith
df1 =(df.reset_index()
.groupby(df.columns.tolist())['level_0']
.apply('|'.join)
.str.get_dummies()
.reindex(columns=inds, fill_value=0)
.reset_index())
print (df1)
Forename Surname Ind_1 Ind_2 Ind_3 Ind_4
0 charlie jim 1 0 0 1
1 ian james 0 1 0 0
2 jon smith 0 0 0 1