我正在使用pandas数据帧,我想在空格发生后删除所有信息。我的数据框与此类似:
import pandas as pd
d = {'Australia' : pd.Series([0,'1980 (F)\n\n1957 (T)\n\n',1991], index=['Australia', 'Belgium', 'France']),
'Belgium' : pd.Series([1980,0,1992], index=['Australia','Belgium', 'France']),
'France' : pd.Series([1991,1992,0], index=['Australia','Belgium', 'France'])}
df = pd.DataFrame(d, dtype='str')
df
我可以删除一个特定列的值,但split()函数不适用于整个数据帧。
f = lambda x: x["Australia"].split(" ")[0]
df = df.apply(f, axis=1)
任何人都知道如何在数据框中的每个值出现空格后删除信息?
答案 0 :(得分:1)
让我们尝试使用assign,因为此数据框中的列名称“井井有条”,意味着不包含空格或特殊字符:
df.assign(Australia=df.Australia.str.split().str[0])
输出:
Australia Belgium France
Australia 0 1980 1991
Belgium 1980 0 1992
France 1991 1992 0
如果您的所有列数据类型都是字符串,则可以使用apply和lamda函数:
df.apply(lambda x: x.str.split().str[0])
或者,如果您有数字和字符串dtypes的混合,那么您可以select_dtypes
使用assign
,如下所示:
df.assign(**df.select_dtypes(exclude=np.number).apply(lambda x: x.str.split().str[0]))
答案 1 :(得分:1)
我认为需要将所有列转换为string
s然后应用split
函数:
df = df.astype(str).apply(lambda x: x.str.split().str[0])
另一种解决方案:
df = df.astype(str).applymap(lambda x: x.split()[0])
print (df)
Australia Belgium France
Australia 0 1980 1991
Belgium 1980 0 1992
France 1991 1992 0
答案 2 :(得分:0)
您可以遍历所有列并在下面应用:
for column in df:
df[column] = df[column].str.split().str[0]