如何解决在 Pandas 中的数据框中查找和链接值
在 Pandas 数据框中,例如:
data = [['Ben','Apple','Banana'],['Nancy','Pear','Apple'],['Paul','Banana','Mango'],['Sally','Mango','Pear']]
df = pd.DataFrame(data,columns = ['Name','Like','dislike'])
df
Name Like dislike
0 Ben Apple Banana
1 Nancy Pear Apple
2 Paul Banana Mango
3 Sally Mango Pear
我将如何匹配 Like 和 dislike 列中的水果并创建一个 df 或谁应该与谁交易的列表?
Trades = [['Ben','Paul'],'Sally'],'Nancy'],'Ben']]
TradesDF = pd.DataFrame(Trades,columns = ['From','To'])
From To
0 Ben Paul
1 Paul Sally
2 Sally Nancy
3 Nancy Ben
我最纠结的部分是匹配查找,我了解如何比较行和列,但是整个 DF 中的单个值是一个难题,似乎这里需要一些递归方法。 谢谢。
解决方法
这是关系数据库使用的标准连接/合并操作。下面,我在“喜欢”、“不喜欢”列上将数据框加入到自身中,并将它们重命名:
public ItemViewModel()
{
ListOfItems = new ObservableCollection<ItemModel>();
OpenAddItemWindowCommand = new RelayCommand(OpenAddItemWindow);
CreateItemCommand = new RelayCommand(CreateItem);
}
private ObservableCollection<ItemModel> _listOfItems;
public ObservableCollection<ItemModel> ListOfItems { get { return _listOfItems; } set { _listOfItems = value; OnPropertyChanged("ListOfItems"); } }
输出:
df2 = pd.merge(left=df,right=df,left_on="Dislike",right_on="Like")
df2 = df2.rename(columns={"Name_x":"From","Name_y":"To"})[["From","To"]]
,
我想这个会帮助你:
trades=[]
for i in range(len(df)):
if df.iloc[i]["Dislike"] in df["Like"].values:
trades.append((df.iloc[i]["Name"],(df["Name"][df.iloc[i]["Dislike"] == df.Like.values]).item()))
,
您可以在 Dislike = Like
上使用自加入/合并,并返回名称:
df_trade = df.merge(df,left_on='Dislike',right_on='Like',suffixes=('_from','_to'))
df_trade.loc[:,['Dislike_from','Name_from','Name_to']]
返回结果:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。