[英]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_index
從Year
列中的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.