我刚开始学习熊猫。
在我的数据集上,我正在运行一个字符串操作来删除某些子字符串。 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('\(.*|.*\:','')
现在,我尝试通过运行
将这4个系列连接到DataFrame中pd.concat([s1,s2,s3,s4],axis=1)
但是新的DataFrame在字符串操作之前显示旧的DataFrame以及修改后的数据。
在我的数据帧上运行字符串操作的最佳和有效方法是什么?并且,有没有办法在数据帧上运行字符串操作而不创建一系列或其他变量?
答案 0 :(得分:0)
我认为您需要将输出分配到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
列开始this ansver,最后set_index
:
list comprehension
如果需要更通用的解决方案,则需要Series
,因为reset_index
之类的字符串函数仅适用于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
列):
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
或使用str.replace
:
new StreamTransformer.fromHandlers(handleData: (String event, EventSink output) {
if (event.startsWith('data:')) {
output.add(JSON.decode(event.substring('data:'.length)));
} else if (event.isNotEmpty) {
output.addError('Unexpected data from CloudBit stream: "$event"');
}
});