
[英]Create new dataframe from two dataframes. One df contains column indices the other df the values
[英]Create new df if value in df one column is included in df two same column name
几天前我在这里,我将尝试更好地重述我的问题。 我正在使用Python和Pandas并尝试完成某些任务。 我正在使用两个数据框,它们都具有学生ID。 如果第2列包含第一列中的学生ID,我希望能够将一个新的数据框合并在一起。 有人知道怎么做这个吗? 我尝试研究并使用pd.melt(),pd.merge()和加入。 但是我不认为这不能为我完成工作。
df1列中的示例“学生”,id为1234。如果df2具有相同的学生ID,则将其放入数据框中。 这样一来,我就可以在一个df中拥有一个特定学生的所有年级,而他们在不同的df中却来自不同的学生组。
除非您真正找到答案,否则请不要仅将其标记为重复,因为我一直在寻找答案的日子。
尝试这个:
df1 = pd.DataFrame({"Assignment": ["A","B"], "Grade": ["85", "87"], "Student": ["112345","123234"], "Date": ["8-23-17","3-21-17"]}, columns=["Assignment","Grade","Student","Date"], index=range(2))
df2 = pd.DataFrame({"Assignment": ["B", "F"], "Grade": ["75", "22"], "Student": ["112345","123213"], "Date": ["7-28-17", "4-12-17"]}, columns=["Assignment","Grade","Student","Date"], index=range(2))
print(df1)
// Assignment Grade Student Date
// 0 A 85 112345 8-23-17
// 1 B 87 123234 3-21-17
print(df2)
// Assignment Grade Student Date
// 0 B 75 112345 7-28-17
// 1 F 22 123213 4-12-17
现在提取重复项:
df3 = pd.DataFrame()
for index1, value1 in df1.loc[:,['Student']].stack().iteritems():
notYetAddedFirst = True
for index2, value2 in df2.loc[:,['Student']].stack().iteritems():
if value1 == value2:
if notYetAddedFirst:
df3 = pd.concat([df3,df1.loc[index1[0]:index1[0]]]).reset_index().drop(['index'], axis=1)
notYetAddedFirst = False
df3 = pd.concat([df3,df2.iloc[index2[0]:index2[0]+1]]).reset_index().drop(['index'], axis=1)
print(df3)
// Assignment Grade Student Date
// 0 A 85 112345 8-23-17
// 1 B 75 112345 7-28-17
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.