我目前有 n 个带有 ID 和 X 值的数据帧 (dfs[n]) 以及一个带有 ID 的数据帧 (df)。
如果 X 值的 ID 与 df 的 ID 匹配,我想将 X 值添加到 df 中的新列,并添加“X 值 n”作为列名称。
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.DataFrame.set_index
后进行 pd.concat
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
<小时/>
关于python - 如果与另一个数据帧的 ID 匹配,则添加 n 个数据帧中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46803527/