Python 数据帧:根据条件修改完整数据帧中的单个值
我有一个如下所示的数据帧Python 数据帧:根据条件修改完整数据帧中的单个值,python,pandas,Python,Pandas,我有一个如下所示的数据帧 A B C 0 5 4) 0 3 2) 1 1 9 1 2 0,10 3) 9 0,22 3) 3 0.5 10 0.2 4 0,07 2) 2 0,05 3) 现在我想更改包含括号“)”的值,以便只保留第一个数字。像这样: A B C 0 5 0 3 1 1
A B C
0 5 4) 0 3 2)
1 1 9 1
2 0,10 3) 9 0,22 3)
3 0.5 10 0.2
4 0,07 2) 2 0,05 3)
现在我想更改包含括号“)”的值,以便只保留第一个数字。像这样:
A B C
0 5 0 3
1 1 9 1
2 0,10 9 0,22
3 0.5 10 0.2
4 0,07 2 0,05
我用下面的代码进行了尝试,成功了
for i in df["A"]:
if ")" in str(i):
new, filler = str(i).split(" ",1)
df.replace(i, new,inplace=True)
由于数据量很大,我需要在整个数据帧上执行此操作,而不仅仅是在列“A”上。最好的方法是什么?
谢谢 一种方法是在空格上拆分并保留结果列表的第一个元素:
cols = ['A', 'C']
df[cols] = df[cols].apply(lambda x: x.str.split(' ').str[0])
一种方法是在空格上拆分,并保留结果列表的第一个元素:
cols = ['A', 'C']
df[cols] = df[cols].apply(lambda x: x.str.split(' ').str[0])
您可以用于idx,df.iteritems()中的值:然后应用转换信息无效您可以用于idx,df.iteritems()中的值:然后应用转换信息无效谢谢您的回答。不幸的是,如果我使用您的代码,我会为所有不包含“)”的值得到一个“NaN”。像这样:A[5,NaN,0.10,NaN,0.07]好吧,我的错。我在几个单元格中输入了错误的类型(float而不是str)。通过此更改,它成功了:df2[cols]=df2[cols].apply(lambda x:x.astype(str).str.split(“”).str[0])-谢谢!谢谢你的回答。不幸的是,如果我使用您的代码,我会为所有不包含“)”的值得到一个“NaN”。像这样:A[5,NaN,0.10,NaN,0.07]好吧,我的错。我在几个单元格中输入了错误的类型(float而不是str)。通过此更改,它成功了:df2[cols]=df2[cols].apply(lambda x:x.astype(str).str.split(“”).str[0])-谢谢!