我有一个熊猫数据框,如下所示
NAME EMAIL HEIGHT WEIGHT
1 jlka NaN 170 70
2 qwer eee@ttt 180 80
3 ioff NaN 175 75
4 iowu iou@add 170 60
我想用不含重复项的随机字符串替换“EMAIL”列中的NaN,该字符串不一定包含@。
我试图做一个def生成随机字符串,但NaN被替换为相同的随机字符串,因为我毕竟使用了'fillna'方法。
看起来,正如我看到的其他Q$As,fillna中的def只工作一次,并用同样的值或字符串替换所有的NaN。
我应该试着用“for”一个接一个地替换它们吗?
或者有没有一种更像蟒蛇的方式来取代它们?
您可以使用pd.util.testing.rands_array
,将所需字符串的长度作为第一个(nchars)参数传递给它,并将NaN
s的数量作为第二个(size)参数传递给它:
df.loc[df.EMAIL.isna(), "EMAIL"] = pd.util.testing.rands_array(10, sum(df.EMAIL.isnull()))
>>> df
NAME EMAIL HEIGHT WEIGHT
1 jlka YxzVaC38uw 170 70
2 qwer eee@ttt 180 80
3 ioff 33kyDArtip 175 75
4 iowu iou@add 170 60
pd.util.testing.rand_数组
可以替换为返回具有特定大小的列表或数组的任何函数。
您可以尝试以下方法:
import pandas as pd
from numpy import nan
import random
import string
df = pd.DataFrame({
'Name': ['aaa','bbb','CCC'],
'Email': [nan,'ddd',nan]})
def processNan (x):
return ''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(10))
df['Email'] = df['Email'].apply(lambda x: processNan(x) if x is nan else x)
问题内容: 我有一个Pandas Dataframe,如下所示: 我想用一个空字符串删除NaN值,使其看起来像这样: 问题答案: 这可能会有所帮助。它将用空字符串替换所有NaN。
问题内容: 我想替换列中的子字符串 到。 需求输出 我尝试,但它返回。 问题答案: 使用与更换和:
我有以下数据框 我想用替换和,因此最终的数据帧是 我尝试了以下方法,但不起作用:
我有一个数据框,如下所示: 我想用一个空字符串删除NaN值,这样看起来像这样:
我有一个空单元格的数据框,并希望用NaN替换这些空单元格。之前在这个论坛上提出的解决方案有效,但前提是单元格包含一个空间: 当单元格为空时,此代码不起作用。有人建议用熊猫代码来代替空细胞吗?
我有一个熊猫数据框(通过导入csv文件创建)。我想用NaN替换空白值。这些空白值中有些是空的,有些包含(可变数量的)空格,,,等等。 使用这个线程中的建议 它会替换所有只包含空格的字符串,但也会替换每个包含空格的字符串,这不是我想要的。 如何仅用空格和空字符串替换字符串?