Python 在CSV(数字)中查找特定字段值并将其转换为文本值

Python 在CSV(数字)中查找特定字段值并将其转换为文本值,python,pandas,csv,dataframe,Python,Pandas,Csv,Dataframe,我的CSV文件的格式如下: sidebars,notes,riskOthers,seriousEvents,goodCatches,harms ,SAFE; 2 moveouts; 0 discharges; ED patient awaiting bed in MAT,0,0,0,0 ,Staffing,0,0,0,0 ,,1,0,0,0 ,,0,0,0,0 ,,0,0,0,0 ,Staffing needs,0,0,0,0 ,Safe,1,0,0,0 ,1- 1-1/ Staffing @

我的CSV文件的格式如下:

sidebars,notes,riskOthers,seriousEvents,goodCatches,harms
,SAFE; 2 moveouts; 0 discharges; ED patient awaiting bed in MAT,0,0,0,0
,Staffing,0,0,0,0
,,1,0,0,0
,,0,0,0,0
,,0,0,0,0
,Staffing needs,0,0,0,0
,Safe,1,0,0,0
,1- 1-1/ Staffing @ 3p- 7a,0,0,0,0
SB- Central Stores,,2,0,0,0
SB - ED Dr. G,,0,0,0,0
,,0,0,0,0
,1 pt in restraints,0,0,0,0
,1 Pt in Restraints,0,0,0,0
SB- Pharmacy,@ Risk - Staffing/ Security with Pt who had drug paraphernalia/ 1-1-1,1,0,0,0
我想选择最后四列中大于1的值,并将其替换为1。这是我尝试过但失败的代码

data = pd.read_csv('reordered.csv')
df = pd.DataFrame(data, columns = ['sidebars','notes','riskOthers','seriousEvents', 'goodCatches', 'harms'])

# Values to find and their replacements
findL = ['3', '2', '4', '5', '6']
replaceL = ['1', '1', '1', '1', '1']

# Select column (can be A,B,C,D)
col = 'riskOthers';

# Find and replace values in the selected column
df[col] = df[col].replace(findL, replaceL)

在这里,在这段代码中,我试图替换所有大于1:1的值。但是我得到了类型不匹配错误。

尝试映射df[col]并应用lambda函数。 例如:


df[col].map(λx:1,如果x>1,则为0)

以下是一种矢量化方法:


列表findL和replaceL都是字符串数据类型。其中,在文件中,最后四列是整数数据类型。有一种更有效的方法可以实现您的目标,但是作为开始,使用
findL=[3,2,4,5,6]
&
replaceL=[1,1,1,1,1]
这至少会告诉您当前代码是如何失败的。另外,如果值为1,这些值是否也会更改为列名??若你们能添加一个小的目标输出例子,这可能有助于传达你们这项工作的最终目标是什么。你们是对的。我用字符串代替int。谢谢你指出。根据你的要求,您可以根据需要更改条件。是否有方法将前两列中的字符串值“1-1”替换为“1:1”?请注意,Pandas不建议使用此答案,因为它涉及通过
pd.Series.map
执行的Python级别循环。是否有方法将前两列中的字符串值“1-1”替换为“1:1”?您尝试过吗?有吗在我的情况下不起作用,因为字段值是句子,它应该搜索字符串,然后替换。@MeghanaSathish,因为这是一个不同的问题,我建议你问一个新问题,显示所有失败的尝试。
values = df.iloc[:, -4:]
df.iloc[:, -4:] = values.mask(values > 1, 1)

print(df.iloc[:, -4:])

    riskOthers  seriousEvents  goodCatches  harms
0            0              0            0    0.0
1            0              0            0    0.0
2            1              0            0    0.0
3            0              0            0    0.0
4            0              0            0    0.0
5            0              0            0    0.0
6            1              0            0    0.0
7            0              0            0    0.0
8            1              0            0    0.0
9            0              0            0    0.0
10           0              0            0    0.0
11           0              0            0    0.0
12           0              0            0    0.0
13           1              0            0    NaN