我正在尝试根据该列的部分信息,使用来自另一列的数据来创建一列,例如,我有一个设备列表;
devicename make devicevalue
switch1 cisco 0
switch1-web100 netgear 0
switch10 cisco 0
switch23 cisco 1
switch31-web200 netgear 0
switch31 cisco 1
switch40 cisco 1
该列需要有2个变量
我正在使用Panda's打开csv文件,进行编辑(对于其他一些列)然后保存,但是我对此有困难。
这是我必须去的地方,但是我知道它不起作用,但是我有点迷茫,我对Python还是很陌生;
import pandas as pd
df = pd.read_csv('data.csv')
df['devicevalue'] = df.devicename
if 'netgear' in df.name df.set_value '0'
if str.endswith > 20 df.set_value '0'
else if df.set_value '1'
我意识到以上内容可能根本不正确,但我有点迷茫。
尝试以下操作:
import pandas as pd
df = pd.DataFrame(columns=['devicename', 'make'])
df.loc[0] = ['switch1', 'cisco']
df.loc[1] = ['switch1-web100', 'netgear']
df.loc[2] = ['switch10', 'cisco']
df.loc[3] = ['switch23', 'cisco']
df.loc[4] = ['switch31-web200', 'netgear']
df.loc[5] = ['switch31', 'cisco']
df.loc[6] = ['switch40', 'cisco']
def get_number_suffix(devicename: str) -> int:
"""
This function looks at the last several characters, and extracts
the last n contiguous digits, and returns as an integer.
:param devicename:
:return:
"""
i = 1
while i < len(devicename) and devicename[-i:].isnumeric():
i += 1
return int(devicename[-(i-1):])
def compute_devicevalue(row) -> int:
"""
This function computes the devicevalue based on the criteria:
If make = netgear (set to 0)
If devicename end in 20 or greater (set to 1, otherwise set to 0)
:param row:
:return:
"""
if 'netgear' in row['make']:
return 0
if 20 <= get_number_suffix(row['devicename']):
return 1
else:
return 0
df['devicevalue'] = df.apply(compute_devicevalue, axis=1)
print(df.head(7))