表一:
name point
A0 10
A1 20
A2 30
A3 40
表二
name money
A0 10
A1 10
A0 10
A1 10
现在想得到表三:
name point moneey
A0 10 20
A1 20 20
A2 30 0
A3 40 0
import pandas as pd
df1 = pd.DataFrame({'name': ['A0', 'A1', 'A2', 'A3'],
'point': [10, 20, 30, 40]})
df2 = pd.DataFrame({'name': ['A0', 'A1', 'A0', 'A1'],
'money': ['10', '10', '10', '10']})
后面怎么做啊?谢谢
在pandas中使用concat,merge,join都可以进行数据框合并。实现代码如下:
import pandas as pd
df1 = pd.DataFrame({'name': ['A0', 'A1', 'A2', 'A3'],
'point': [10, 20, 30, 40]})
df2 = pd.DataFrame({'name': ['A0', 'A1', 'A0', 'A1'],
'money': ['10', '10', '10', '10']})
df2.money=df2.money.apply(lambda x:int(x))
df2=df2.groupby(['name'])['money'].sum().to_frame().reset_index()
df=pd.concat([df1,df2['money']],axis=1).fillna(0)
df.money = df.money.apply(lambda x: int(x))
print(df)
运行结果:
name point money
0 A0 10 20
1 A1 20 20
2 A2 30 0
3 A3 40 0
如对你有帮助,请点击我回答的右上方采纳按钮予以采纳一下。
你题目的解答代码如下:(如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮)
import pandas as pd
df1 = pd.DataFrame({'name': ['A0', 'A1', 'A2', 'A3'],
'point': [10, 20, 30, 40]})
df2 = pd.DataFrame({'name': ['A0', 'A1', 'A0', 'A1'],
'money': ['10', '10', '10', '10']})
d = {k:0 for k in df1['name']}
for k,v in zip(df2['name'],df2['money']):
d[k] += int(v)
df3 = pd.DataFrame(df1)
df3['moneey'] = d.values()
print(df3)