我有一个问题,指的是我最后一个问题: 请根据条件的大熊猫数据框的上部n行 。 使用第二所建议的回答我的代码看起来像这样:
import pandas as pd
x=2
y=2
df2 = pd.DataFrame({'x':[1,2,3,4], 'y':[2,2,2,2],'id':[1,2,3,4]})
df2_cut=df2[df2.index <= (df2[(df2.x == x) & (df2.y == y)]).index.tolist()]
这工作也没关系,这是一样的,但有有另一种数据帧。
import pandas as pd
x=2
y=2
df1 = pd.DataFrame({'x':[2,2,2,2], 'y':[1,2,3,4],'id':[1,2,3,4]})
df2 = pd.DataFrame({'x':[1,2,3,4], 'y':[2,2,2,2],'id':[1,2,3,4]})
df1_cut=df1.iloc[((df1['x'] == x) & (df1['y'] == y)).values.argmax():]
df2_cut=df2[df2.index <= (df2[(df1.x == x) & (df2.y == y)]).index.tolist()]
现在是什么奇怪的,我不明白是这样的:
import pandas as pd
x=2
y=2 #made a change here
df1 = pd.DataFrame({'x':[1,2,2,2], 'y':[1,2,3,4],'id':[1,2,3,4]})
df2 = pd.DataFrame({'x':[1,2,3,4], 'y':[2,2,2,2],'id':[1,2,3,4]})
df1_cut=df1.iloc[((df1['x'] == x) & (df1['y'] == y)).values.argmax():]
df2_cut=df2[df2.index <= (df2[(df1.x == x) & (df2.y == y)]).index.tolist()]
这是一样的代码像以前一样,但我换第x
为1 DF1的值缩短DF2时,这种改变投我要DF2一个错误,最后一行。 怎么可能?
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-121-72d9d78368b9> in <module>()
4 df1 = pd.DataFrame({'x':[1,1,1,2,6], 'y':[5,6,7,7,9],'id':[1,2,3,4,5]})
5 df2 = pd.DataFrame({'x':[1,1,4,3,1,1], 'y':[1,1,5,9,2,2],'id':[1,2,3,103,22,90]})
----> 6 df2_cut=df2[df2.index <= (df2[(df1.x == x) & (df2.y == y)]).index.tolist()]
7 df1_cut=df1.iloc[((df1['x'] == x) & (df1['y'] == y)).values.argmax():]
~/anaconda3/lib/python3.6/site-packages/pandas/core/indexes/base.py in _evaluate_compare(self, other)
3844 else:
3845 with np.errstate(all='ignore'):
-> 3846 result = op(self.values, np.asarray(other))
3847
3848 # technically we could support bool dtyped Index
ValueError: operands could not be broadcast together with shapes (6,) (0,)
任何一个知道如何出现这种情况或如何解决我的问题任何其他的想法? 如果任何人对如何解决我的问题的另一个想法,我会很高兴听到这个消息。 基本上,我有两个dataframes与xy
坐标和id
为列。 现在我想给出与所谓的交点x
与y
值,删除在数据帧1中是满足该条件下排中的所有行x
等于x-column
值和y
等于y-column
值。 对于数据框2一样的,但要删除的条件之上的行。 这样,我想2个dataframes(一端与给定的xy coordinates
与它的另一场首发)。 我想CONCAT追加/对方得到一个新的数据帧。 所述dataframes可具有重复和可能发生的是,有像从坐标(1,2)的跳跃直接向(1,4)没有中间步骤(1,3)
这里我会得到上述值的示例:
df1_cut = pd.DataFrame({'x':[2,2], 'y':[1,2],'id':[1,2]})
df2_cut = pd.DataFrame({'x':[2,3,4], 'y':[2,2,2],'id':[2,3,4]})
df_list=[]
df_list.append(df1_cut)
df_list.append(df2_cut)
df_final = pd.concat(df_list, ignore_index=True)
我想这与任何dataframes工作。