我有以下功能:
def match_function(df):
columns = df.columns.tolist()
matches = {}
for column in columns:
df = df.astype(str)
df_new = df.dropna()
df_new = df[column].str.split(',', expand=True)
df_new = df_new.apply(lambda s: s.value_counts(), axis=1).fillna(0)
match = df_new.iloc[:, 0][0] / df_new.sum(axis=1) * 100
match = round(match, 2)
df[column] = match
matches[column] = match
return matches
我想让这个函数运行完全dataframe分别为每一行。它将循环遍历数据帧的第一行,然后停止并再次运行第二行,等等。
因为它是以一种如此复杂和不专业的方式编写的(因为我是Python新手),所以当我传递一个数据框并且它同时运行整个数据框时,结果是错误的。或者改变函数本身,让它逐行
考虑以下df:
a b
0 1.000000 0.000000
1 -2.000000 1.000000
2 1.000000 0.000000
3 3.000000 -4.000000
和下面的函数,命名为"func"
.
def func(x):
return x['a'] + x['b']
你可以按行应用这个函数:
df.apply(func, axis=1)
比收益率:
0 1.000000
1 -1.000000
2 1.000000
3 -1.000000
基本上,对于每一行,我们应用命名函数func()
,也就是x['a']
+x['b']