我目前有 n 个带有 ID 和 X 值的数据帧 (dfs[n]) 和一个带有 ID 的数据帧 (df)。
如果 X 值的 ID 与 df 的 ID 匹配并添加“X 值 n”作为列名,我想将 X 值添加到 df 中的新列。
for n in range(len(files)):
if dfs[n]['ID'] == df['ID']:
df = df.join(dfs[n]['X values'], on='ID', rsuffix = int(r))
print(df)
我试过这段代码,但没有用。
感谢您的帮助!
设置
dfs = [pd.DataFrame({'ID': [1, 2, 3], 'X values': list('XYZ')}) for _ in range(4)]
df = pd.DataFrame(dict(ID=[1, 2, 3]))
解决方案
你需要pd.concat
之后pd.DataFrame.set_index
df.join(
pd.concat(
[d.set_index('ID')['X values'] for d in dfs],
axis=1, keys=list(range(len(dfs)))
), on='ID')
ID 0 1 2 3
0 1 X X X X
1 2 Y Y Y Y
2 3 Z Z Z Z
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句