Excel Copy Paste Way в Python - PullRequest
       12

Excel Copy Paste Way в Python

1 голос
/ 05 ноября 2019

У меня есть фрейм данных, как показано ниже

df = pd.DataFrame([[3,2,1],[4,5,6],[10,20,30]], columns = ['A','B','C'])

    A   B   C
0   3   2   1
1   4   5   6
2  10  20  30

Есть ли в python способ имитировать функцию копирования и вставки в Excel? Например, я хочу скопировать вставку строки 0 столбца A и B и вставить их в строку 0 столбца B и C, чтобы она стала

    A   B   C
0   3   3   2
1   4   5   6
2  10  20  30

В небольшом фрейме данных я могу использовать:

df.loc[0,'C'] = df.loc[0,'B']
df.loc[0,'B'] = df.loc[0,'A']

Но мой исходный фрейм данных достаточно большой, и я предпочитаю не делать этот элемент одним элементом. Я также пытался сделать:

df.loc[0,['A','B']] = df.loc[0,['B','C']]

Но мои данные в строке 0 столбца A становятся NaN.

Так есть ли способ сделать такие вещи, как копирование вставить в Excel в Python(просто заблокируйте диапазон данных, скопируйте их и вставьте поверх других существующих данных)? Спасибо

Ответы [ 2 ]

2 голосов
/ 05 ноября 2019

anky_91's answer

df.loc[0, ['B', 'C']] = df.loc[0, ['A', 'B']].to_numpy()

shift

Существует множество способов использования смены. Это только один.

df.update(df.shift(axis=1)[['B', 'C']])

По причинам, которые меня не устраивают, вы можете предоставить fill_value до shift для сохранения целого числа dtype

df.update(df.shift(axis=1, fill_value=0)[['B', 'C']])
0 голосов
/ 05 ноября 2019

В большинстве случаев это кажется плохой идеей, но если это то, что вы действительно хотите сделать, вы можете использовать .iloc, чтобы обращаться к столбцам по номерам и просто сдвигать их:

In [56]: df.iloc[0, 1:] = df.iloc[0, :-1].values

In [57]: df
Out[57]:
    A   B   C
0   3   3   2
1   4   5   6
2  10  20  30
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...