如何连接来自同一数据帧的2列,但将第1列的a到d行和第2列的m到p联接?

时间:2019-02-11 17:03:37

标签: python pandas dataframe

我尝试了几种方法,但到目前为止仍无法获得结果。

我想获得Col_C,它是Col_A(行数从0到5)和Col_B(行数从6到10)的组合

Index   Col_A   Col_B   Col_C
0   1   2   1
1   1   3   1
2   1   6   1
3   1   3   1
4   1   9   1
5   1   3   1
6   1   2   2
7   1   4   4
8   1   6   6
9   1   7   7
10  1   1   1

我尝试过这样的事情:

df['Col_A'] = pd.concat(df['Col_A'].iloc[0:5], df['Col_B'].iloc[5:10])

我得到一个错误:

  

TypeError:第一个参数必须是pandas对象的可迭代对象,您   传递了“系列”类型的对象

2 个答案:

答案 0 :(得分:0)

您需要:

df = pd.DataFrame({'a':[1]*11, 'b':[2,3,6,3,9,3,2,4,6,7,1]})

x = list(df.loc[:5,'a']) #  + df.iloc[6:,'b']
x.extend(list(df.loc[6:,'b']))
df['c'] = x
print(df)

替代解决方案:使用np.where

df['c'] = np.where(df.index < 6, df['a'], df['b'])

答案 1 :(得分:0)

给出一个df:

gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
gray = 255-gray
ret, thresh = cv2.threshold(gray, 225, 255, cv2.THRESH_BINARY_INV)
image, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
frame = cv2.drawContours(frame, contours, -1,(0,0,255),3)

要做:

    Col_A  Col_B  Col_C
0       1      2      3
1       1      2      3
2       1      2      3
3       1      2      3
4       1      2      3
5       1      2      3
6       1      2      3
7       1      2      3
8       1      2      3
9       1      2      3
10      1      2      3

出局:

df['Col_C'] = pd.concat((df['Col_A'].iloc[:6], df['Col_B'].iloc[6:]))