我能搞定这个
<?php while ($row = mysql_fetch_assoc($result)): ?>
<li> <?= $row['ounces'] ?> oz <?= $row['name'] ?></li>
<?php endwhile ?>
当我的函数返回元组时
df['col_A'] = df.apply(lambda x: getSingleValue(x['col_X']), axis=1)
但是,我需要知道是否有一种方法可以使用单个函数调用将元组输出df['col_A'] = df.apply(lambda x: getaTuple(x['col_X'])[0], axis=1)
df['col_B'] = df.apply(lambda x: getaTuple(x['col_X'])[1], axis=1)
应用于数据框的多个列,而不是每列调用getaTuple()
多次我正在设定价值。
以下是输入和输出的示例
getaTuple
仅供参考,这类似于how to apply a function to multiple columns in a pandas dataframe at one time
但不重复,因为我需要将df = pd.DataFrame(["testString_1", "testString_2", "testString_3"], columns=['column_X'])
def getaTuple(string):
return tuple(string.split("_"))
In [3]: iwantthis
Out[3]:
col_X col_A col_B
0 testString_1 testString 1
1 testString_2 testString 2
2 testString_3 testString 3
作为输入传递给我的函数。
答案 0 :(得分:3)
如果我理解你的问题,这应该有效:
df[['col_A','col_B']] = df['col_X'].apply(getaTuple).apply(pd.Series)
答案 1 :(得分:3)
这是矢量化解决方案:
In [53]: df[['col_A','col_B']] = df.column_X.str.split('_', expand=True)
In [54]: df
Out[54]:
column_X col_A col_B
0 testString_1 testString 1
1 testString_2 testString 2
2 testString_3 testString 3
<强>更新强>
In [62]: df[['col_A','col_B']] = df.column_X.str.split('_', expand=True)
In [63]: df
Out[63]:
column_X col_A col_B
0 testString_1 testString 1
1 testString_2 testString 2
2 testString_3 testString 3
3 None
4 aaaaaaa aaaaaaa None
PS如果您想要的数据集看起来不一样,请在您的问题中发布