熊猫字符串切片返回NaN

时间:2020-09-24 07:43:16

标签: python pandas dataframe

我有一个如下数据框:

Ref   Net   
C1    1- A:VCC 
C2    2- A:VDD 
C3    3- A:GND 

我想从1- A:列中删除2- A:3- A:Net

Ref   Net  
C1    VCC  
C2    VDD  
C3    GND  

我尝试了以下命令: df.Net = df.Net.str.slice(df.Net.str.find('A:'))

但是随后Net列变成了NaN

print(df.Net)
---------
0  NaN
1  NaN
2  NaN

slice命令返回正确的值:

print(df.Net.str.find('A:'))
------
0  3
1  3
2  3

我在这里想念什么?

3 个答案:

答案 0 :(得分:2)

我认为net系列的类型为str。也许您应该尝试以下方法:

.js
如果类型为str,则

df['result'] = df['Net'].apply(str).apply(lambda x: x.split(':')[-1]) 是可选的。

答案 1 :(得分:1)

您可以这样做:

<?php
// Server information
$server   = "server\instance,port";
$database = "database";
$uid      = "username"; 
$pwd      = "password";

// Configuration
sqlsrv_configure("WarningsReturnAsErrors", 0);

// Connection
$cinfo = array(
    "UID" => $uid,
    "PWD" => $pwd,
    "Database" => $database
);
$conn = sqlsrv_connect($server, $cinfo);
if ($conn === false) {
    echo "Unable to connect.";
    die( print_r( sqlsrv_errors(), true));
}

// Statement
$sql = "
    DECLARE @date VARCHAR(19)
    SET @date = CONVERT(VARCHAR(19), GETDATE(), 126)
    SET @date = REPLACE(@date, ':', '-')
    SET @date = REPLACE(@date, 'T', '-')
    
    DECLARE @fileName VARCHAR(100)
    SET @fileName = ('d:\backup\BackUp_' + @date + '.bak')
    
    BACKUP DATABASE dbname
    TO DISK = @fileName
    WITH 
        FORMAT,
        STATS = 1, 
        MEDIANAME = 'SQLServerBackups',
        NAME = 'Full Backup of dbname';
";
$stmt = sqlsrv_query($conn, $sql);
if ($stmt === false) {
    echo "Unable to execute query.";
    die( print_r( sqlsrv_errors(), true));
}

// Clear buffer
while (sqlsrv_next_result($stmt) != null){};
echo "Success";

// End
sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);
?>

答案 2 :(得分:0)

您可以为此使用正则表达式

import pandas as pd

df = pd.DataFrame({'Ref':['C1', 'C2'], 'Net':['1- A:VCC', '2- A:VDD']})
df['Net'] = df['Net'].str.replace(r'\d- \w:', '')

输出:

  Ref    Net
0  C1  VCC
1  C2  VDD