我有如下的优点
A B 1A 100 2A 1A 3A 101 5A 1A
预期输出为
A B Bool 1A 100 2A 1A True 3A 101 5A 1A True
这里你可以看到df ['A ']中的1A也出现在df ['B]中我试着
1A
import pandas as pd df = pdf.read_excel('test.xlsx') df['A'].isin(df['B'])
但它不工作
gt0wga4j1#
import pandas as pd import numpy as np data = { 'A':['1A','2A','3A','5A'], 'B':[100,'1A',101,'1A'], 'Bool': False } df = pd.DataFrame(data)
使用此代码,您将获得以下 Dataframe :
A B Bool 0 1A 100 False 1 2A 1A False 2 3A 101 False 3 5A 1A False
您可以使用iterrows()以这种方式更正第三列
list_A = np.array(df['A']) for index, row in df.iterrows(): if df['B'][index] in list_A: df['Bool'][index] = True
输出为:
A B Bool 0 1A 100 False 1 2A 1A True 2 3A 101 False 3 5A 1A True
但这并不是一个好的解决方案,如果没有iterrows(),你可以做如下操作:
data = { 'A':['1A','2A','3A','5A'], 'B':[100,'1A',101,'1A'] } df = pd.DataFrame(data) df['bool'] = df['B'].isin(df['A'])
输出是相同的:
A B bool 0 1A 100 False 1 2A 1A True 2 3A 101 False 3 5A 1A True
SettingWithCopyWarning:A value is trying to be set on a copy of a slice from a DataFrame
df['B'].isin(df['A']) Time: 0.002069372000050862 df.iterrows() Time: 0.010589972999696329
1条答案
按热度按时间gt0wga4j1#
使用此代码,您将获得以下 Dataframe :
您可以使用iterrows()以这种方式更正第三列
输出为:
但这并不是一个好的解决方案,如果没有iterrows(),你可以做如下操作:
输出是相同的: