簡體   English   中英

使用python在Pandas中對DataFrame和Series進行字符串操作

[英]String operation on DataFrame and Series in Pandas with python

我剛開始學習熊貓。

在我的數據集上,我正在運行字符串操作以刪除某些子字符串。 input_dataframe如下:

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('\(.*|.*\:','') 

現在,我嘗試通過運行以下命令將這四個系列合並為一個DataFrame

pd.concat([s1,s2,s3,s4],axis=1)

但是新的DataFrame會在字符串操作之前顯示舊的DataFrame以及修改后的數據。

在我的數據幀上運行字符串操作的最佳和有效方法是什么? 而且,有沒有一種方法可以在數據幀上運行字符串操作而無需創建序列或其他變量?

我認為您需要將輸出分配給df ,但set_indexYear列中的Year一個reset_index和最后一個reset_index

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 ,因為像字符串函數str.replace僅適用於Series (列DataFrame ):

df1 = input_dataframe.set_index('Year')
df2 = pd.concat([input_dataframe[col].str.replace('\(.*|.*\:','') for col in df1], axis=1)
df2 = df2.reset_index()
print (df2)
   Year Australian Open Wimbledon French Open US Open
0  1999           Name1     Name2       Name3   Name4
1  2000           Name6     Name7           .    Name

或使用DataFrame.replace

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM