Как объединить 2 столбца из одного и того же информационного кадра, но взять строки от a до d из столбца 1 и от m до p из столбца 2? - PullRequest
0 голосов
/ 11 февраля 2019

Я пробовал несколько способов, но пока не могу получить результат.

Я хочу получить 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])

Я получаю сообщение об ошибке:

Ошибка типа:первый аргумент должен быть итерируемым из объектов pandas, вы передали объект типа "Series"

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Имеется df:

    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

Do:

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

Out:

    Col_A  Col_B  Col_C
0       1      2      1
1       1      2      1
2       1      2      1
3       1      2      1
4       1      2      1
5       1      2      1
6       1      2      2
7       1      2      2
8       1      2      2
9       1      2      2
10      1      2      2
0 голосов
/ 11 февраля 2019

Вам нужно:

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'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...