我有 2 个数据帧,其中一个包含字符串,另一个包含时间戳和字符串。
df2= pd.DataFrame({'Name':['Tim', 'Timothy', 'Kistian', 'Kris cole','Ian'],
'Age':['1-2-1997', '21-3-1998', '19-6-2000', '18-4-1996','12-12-2001']})
df1= pd.DataFrame({'string':['Ti', 'Kri' ,'ian' ],
'MaxDate':[None, None, None]})
我想将 df2 上的 MaxDate
操作的最大日期分配给 str.contains(df1['string'][0]
列:
例如:df2[df2.Name.str.contains(df1['string'][0])]
给了我 2 条记录
我想将这些值中的最大值分配给与 'ti' 对应的 MaxDate
:
即第一次迭代的 o/p 将是:
df1= pd.DataFrame({'string':['Ti', 'Kri' ,'ian' ],
'MaxDate':['1-2-1997', None, None]})
如何使用循环对 df1 的所有条目执行此操作?
答案 0 :(得分:1)
如果需要循环解决方案,使用 max
创建字典列表并传递给 DataFrame
构造函数:
df2['Age'] = pd.to_datetime(df2['Age'], dayfirst=True)
out = []
for x in df1['string']:
m = df2.loc[df2.Name.str.contains(x), 'Age'].max()
out.append({'string': x, 'MaxDate': m})
df = pd.DataFrame(out)
print (df)
string MaxDate
0 Ti 1998-03-21
1 Kri 1996-04-18
2 ian 2000-06-19