从pandas DataFram中的列创建元组

2024-04-26 11:39:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从pandas数据框中的列自动创建一个元组(传递给scipy.stats函数),这样元组的每一行都是数据框中每一列的值。 这是我的数据帧的标题:

                     4_3-a-0    5_3-a-4    7_3-a-3
datetime_pac                                      
2015-09-03 22:00:00   -100.4 -96.857143 -55.000000
2015-09-03 22:01:00   -100.5 -91.700000 -55.600000
2015-09-03 22:02:00   -100.4 -90.875000 -55.900000
2015-09-03 22:03:00   -100.4 -94.000000 -55.555556
2015-09-03 22:04:00   -100.5 -99.500000 -55.545455

我可以像这样手动实现:

from scipy import stats
stats.f_oneway(df.ix[:,0], df.ix[:,1], df.ix[:,2])

但如果数据框中的列数未知,我想将其“自动化”。以下尝试(以及的许多变体)将不起作用:

stats.f_oneway(tuple(x) for x in xtmp.values)
stats.f_oneway((xtmp[x]) for x in xtmp.columns)

谢谢你的帮助!


Tags: 数据函数in标题pandasdffordatetime
2条回答

只要调用apply并调用tuple

In [3]:
df = pd.DataFrame(np.random.randn(5,3))
df

Out[3]:
          0         1         2
0  0.785562 -0.263813  2.239865
1  1.083918  0.035746  0.429111
2  1.422599 -0.818151  0.765725
3  1.022289  0.098561 -2.393095
4 -0.548451 -0.345796  0.298237

In [4]:
df.apply(tuple, axis=1)

Out[4]:
0     (0.785562108573, -0.263813112223, 2.23986497964)
1     (1.08391788685, 0.0357457180803, 0.429110675053)
2      (1.4225989372, -0.818150896781, 0.765724984713)
3     (1.02228880387, 0.0985610274998, -2.39309469576)
4    (-0.548450748411, -0.345796089243, 0.298237353...
dtype: object

那怎么办

tuple([tuple(df[col]) for col in df])

相关问题 更多 >