在 pandas 数据框列中填充空白会导致函数反转
Filling blanks in a pandas dataframe column leads to reversal of function
我有以下数据框:
a b x y language
0 id1 id_2 3
1 id2 id_4 6 ,0=/%
2 id3 id_6 9 |-|/#
3 id4 id_8 12 text4
我使用 langdetect 来检测 y 列中文本元素的语言。
这是我为此目的使用的代码:
for i, row in df.iterrows():
try:
df.loc[i, "language"] = detect(row["y"])
except:
continue
这是结果:
a b x y language
0 id1 id_2 3
1 id2 id_4 6 ,0=/%
2 id3 id_6 9 |-|/#
3 id4 id_8 12 text4 en
4 id5 id_9 14 text5 de
5 id6 id_10 12
然后我尝试使用以下任一命令用字符串“N/A”填充语言列中的空白:
df['language'].replace([''],"N/A", inplace=True)
df['language'] = df['language'].fillna(0)
对于上面的每个命令,我收到了以下结果:
a b x y language
0 id1 id_2 3 N/A N/A
1 id2 id_4 6 ,0=/% ,0=/%
2 id3 id_6 9 |-|/# |-|/#
3 id4 id_8 12 text4 text4
4 id5 id_9 14 text5 text5
5 id6 id_10 12 N/A N/A
如何获得以下结果:
a b x y language
0 id1 id_2 3 N/A
1 id2 id_4 6 ,0=/% N/A
2 id3 id_6 9 |-|/# N/A
3 id4 id_8 12 text4 en
4 id5 id_9 14 text5 de
5 id6 id_10 12 N/A
使用 np where(),检查语言是否有字母数字。
df['language']=np.where(df['language'].str.contains('\w'),df['language'],'N/A')
这有效!
初始数据帧:
a b x y language new
0 0 id1 id_2 3 None
1 1 id2 id_4 6 ,0=/%
2 2 id3 id_6 9 kl
3 3 id4 id_8 12 text4
用过的替换掉就用space
df.new=df['new'].replace(" ",'n/a')#or
df['new'].replace(" ",'n/a',inplace=True)#also works
输出:
a b x y language new
0 0 id1 id_2 3 None n/a
1 1 id2 id_4 6 ,0=/% n/a
2 2 id3 id_6 9 kl
3 3 id4 id_8 12 text4 n/a
我有以下数据框:
a b x y language
0 id1 id_2 3
1 id2 id_4 6 ,0=/%
2 id3 id_6 9 |-|/#
3 id4 id_8 12 text4
我使用 langdetect 来检测 y 列中文本元素的语言。
这是我为此目的使用的代码:
for i, row in df.iterrows():
try:
df.loc[i, "language"] = detect(row["y"])
except:
continue
这是结果:
a b x y language
0 id1 id_2 3
1 id2 id_4 6 ,0=/%
2 id3 id_6 9 |-|/#
3 id4 id_8 12 text4 en
4 id5 id_9 14 text5 de
5 id6 id_10 12
然后我尝试使用以下任一命令用字符串“N/A”填充语言列中的空白:
df['language'].replace([''],"N/A", inplace=True)
df['language'] = df['language'].fillna(0)
对于上面的每个命令,我收到了以下结果:
a b x y language
0 id1 id_2 3 N/A N/A
1 id2 id_4 6 ,0=/% ,0=/%
2 id3 id_6 9 |-|/# |-|/#
3 id4 id_8 12 text4 text4
4 id5 id_9 14 text5 text5
5 id6 id_10 12 N/A N/A
如何获得以下结果:
a b x y language
0 id1 id_2 3 N/A
1 id2 id_4 6 ,0=/% N/A
2 id3 id_6 9 |-|/# N/A
3 id4 id_8 12 text4 en
4 id5 id_9 14 text5 de
5 id6 id_10 12 N/A
使用 np where(),检查语言是否有字母数字。
df['language']=np.where(df['language'].str.contains('\w'),df['language'],'N/A')
这有效!
初始数据帧:
a b x y language new
0 0 id1 id_2 3 None
1 1 id2 id_4 6 ,0=/%
2 2 id3 id_6 9 kl
3 3 id4 id_8 12 text4
用过的替换掉就用space
df.new=df['new'].replace(" ",'n/a')#or
df['new'].replace(" ",'n/a',inplace=True)#also works
输出:
a b x y language new
0 0 id1 id_2 3 None n/a
1 1 id2 id_4 6 ,0=/% n/a
2 2 id3 id_6 9 kl
3 3 id4 id_8 12 text4 n/a