我试图将数据从一个Panadas数据帧复制到另一个Panadas数据帧,我得到了一些奇怪的结果。例如,如果我有:
[In]:
A = {'Types':['Falcon', 'Eagle', 'sparrow'],
'Speed':[100, 75, 50]}
df_A = pd.DataFrame(A)
df_B = pd.DataFrame()
df_B['Type'] = df_A['Types']
df_B['tags'] = ['FLCN', 'EGLE', 'SPRW']
df_B['ID'] = [543.76, 534.32, 645.25]
df_A['Tags'] = df_B['tags']
df_A['ID'] = df_B['ID']
df_A
我希望得到的是:
[Out]:
Types Speed Tags ID
0 Falcon 100 FLCN 543.76
1 Eagle 75 EGLE 534.32
2 sparrow 50 SPRW 645.25
但我得到的是:
[Out]:
Types Speed Tags ID
0 Falcon 100 FLCN NaN
1 Eagle 75 EGLE NaN
2 sparrow 50 SPRW NaN
我试着在Jupyter笔记本上做这件事来解决问题,收到了一封TypeError: "'Method' object is not subscriptable"
。以下是我收到的类型错误示例:
例2:
[In]:
df_A['ID'] = df_B['ID']
[Out]:
TypeError: 'method' object is not subscriptable
一旦我决定写一个问题,我就在Jupyter中为这些示例编写了代码,并在没有任何问题的情况下得到了预期的结果,所以我被难住了
编辑以添加: 我尝试使用以下方法作为解决方法:
[In]:
df_A['Tags'] = df_B['tags']
df_A = pd.concat(df_A, df_B['ID'], axis = 1)
但我还是得到了令人讨厌的结果。通过此示例代码,我最终得到:
[Out]:
Types Speed Tags ID
0 Falcon 100 FLCN 543.76
1 Eagle 75 EGLE 534.32
2 sparrow 50 SPRW 645.25
但当我使用较大的数据集时,结果如下所示:
[Out]:
Types Speed Tags ID
0 NaN NaN NaN 543.76
1 NaN NaN NaN 534.32
2 NaN NaN NaN 645.25
3 Falcon 100 FLCN NaN
4 Eagle 75 EGLE NaN
5 sparrow 50 SPRW NaN
尽管在pd.concat中使用了“axis=1”作为参数
用你的代码我得到了这个(Jupiter笔记本)。那么您的代码似乎工作正常
在每一步中,使用提供的代码,我也不会得到NaN
出去
也许可以尝试输入完整的代码:
print(type(df_A['ID']), type(df_B['ID']))
来检查两者是否都是pandas.core.series.Series
对于您报告的解决方法,可以将
ignore_index=True
添加为pd.concat([df_A, df_B['tags']], axis=1, ignore_index=True)
,然后修复列名相关问题 更多 >
编程相关推荐