用python实现Pandas中数据帧和序列的字符串操作

2024-05-13 10:29:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚开始学熊猫。在

在我的数据集中,我正在运行一个字符串操作来删除某些子字符串。 输入数据帧如下:

Year   Australian Open   Wimbledon   French Open   US Open
1999   Name1              Name2       Name3         Name4
2000   SUI:Name6(1/4)     Name7       .             USA:Name(1/14)


s1 = input_dataframe["Wimbledon"].str.replace('\(.*|.*\:','')
s2 = input_dataframe["French Open"].str.replace('\(.*|.*\:','')
s3 = input_dataframe["US Open"].str.replace('\(.*|.*\:','')
s4 = input_dataframe["Australian Open"].str.replace('\(.*|.*\:','') 

现在,我尝试通过运行

^{pr2}$

但是新的数据帧显示字符串操作之前的旧数据帧以及修改后的数据。在

在我的数据帧上运行字符串操作的最佳有效方法是什么?还有,有没有办法在不创建序列或附加变量的情况下对dataframe运行字符串操作?在


Tags: 数据字符串dataframeinputopenyearreplaceus
1条回答
网友
1楼 · 发布于 2024-05-13 10:29:42

我认为您需要将输出分配给df,但是第一个^{}来自列Year和最后一个^{}

input_dataframe = input_dataframe.set_index('Year')
s1 = input_dataframe["Wimbledon"].str.replace('\(.*|.*\:','')
s2 = input_dataframe["French Open"].str.replace('\(.*|.*\:','')
s3 = input_dataframe["US Open"].str.replace('\(.*|.*\:','')
s4 = input_dataframe["Australian Open"].str.replace('\(.*|.*\:','') 

df = pd.concat([s1,s2,s3,s4],axis=1).reset_index()
print (df)
   Year Wimbledon French Open US Open Australian Open
0  1999     Name2       Name3   Name4           Name1
1  2000     Name7           .    Name           Name6

如果需要更一般的解决方案,则需要list comprehension,因为像^{}这样的字符串函数只适用于Series(属于{}的列):

^{pr2}$

或使用^{}

data = input_dataframe.replace({'\(.*|.*\:':''}, regex=True)
print (data)
   Year Australian Open Wimbledon French Open US Open
0  1999           Name1     Name2       Name3   Name4
1  2000           Name6     Name7           .    Name

相关问题 更多 >