簡體   English   中英

搜索列,如果值不是所有數字,則將值剪切並粘貼到同一行的另一列 python pandas

[英]Search column, if value is not all digits, then cut&paste value to another column same row python pandas

想就一個讓我糾結的問題尋求幫助。 我有一個 dataframe,三列。 第一列假設是所有數字。 如果列 1 中存在字母(值中的任何位置),則將值剪切並粘貼到同一行中的“列 3”。 我已經想出了如何使用 .loc 來過濾某些值的列,並成功地在 column3 中應用了文本,說“值有字母”。 但是不能將代碼與要說的想法放在一起(如果column1 value.= isdigit then cut&paste value to column3同一行),我當前的測試代碼搜索column1,在value中找到字母。 然后將值移動到我不想要的列底部的 column3。 我將不勝感激有關如何一起使用 loc 和 isdigit 的一些見解。 沒有把握。 感謝您抽出寶貴的時間。

import numpy as np
import pandas as pd
# Create a DataFrame
d = {
    'Column1': ['345634', '3fgh98', '765432', '987ke2', '234654', '09hws4'],
    'Column2': [3, 6, 8, 9, 23, 24,],
    'Column3': ['', '', '', '', '', '',]}

df = pd.DataFrame(d, columns=['Column1', 'Column2', 'Column3'])

test = df['Column1']
for i in test:
    if(str(i).isdigit()):
        continue
    else:
        df.loc[(i), 'Column3'] = i

print(df)

#df.loc[(df.Column1 != str.isdigit), 'Column3'] = str. #test code using .loc and isdigit. Notworking

上面的代碼將在 Column1 中提取帶有字母的值並將它們移動到 Column3 的底部。 它至少獲得了現在我必須將 figure.loc 從 column1 剪切並粘貼到 column3 同一行中的值。 下面是我想要發生的事情的圖片。

Before:

Column1   Column2   Column3
345634    3
3fgh98    6
765432    8
987ke2    9
234654    23
09hws4    24


After:(What I would like to have)

Column1   Column2   Column3
345634    3
          6         3fgh98       
765432    8
          9         987ke2
234654    23
          24        09hws4

我感謝您的幫助。

使用Series.str.match以及給定的正則表達式模式和可選參數na=False (將NaN值視為False )創建一個boolean 掩碼,該掩碼對應於Column1值包含所有數字的條件,然后使用boolean indexing使用此掩碼根據需要更新Column1Column3中的值:

m = df['Column1'].astype(str).str.match('^\d+$', na=False)
df.loc[~m, 'Column3'] = df['Column1']
df.loc[~m, 'Column1'] = ''

結果:

print(df)

  Column1  Column2 Column3
0  345634        3        
1                6  3fgh98
2  765432        8        
3                9  987ke2
4  234654       23        
5               24  09hws4

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM