[英]How to combine multiple numpy arrays into a dataframe?
我有 4 个 numpy 数组,每个数组有 5 个值。 我需要将它们组合成一个数据帧,以便我可以运行 ANOVA 测试和 Tukey 诚实显着差异测试。
数组是:
low = np.array([59.5, 53.3, 56.8, 63.1, 58.7]) # 1.6 nmhos/cm
med = np.array([55.2, 59.1, 52.8, 54.5, np.nan]) # 3.8
medh = np.array([51.7, 48.8, 53.9, 49.0, np.nan]) # 6.0
high = np.array([44.6, 48.5, 41.0, 47.3, 46.1]) # 10.2
我需要将这些组合成一个数据框,打印时会产生以下内容:
Yield EC
0 59.5 Low
1 53.3 Low
2 56.8 Low
3 63.1 Low
4 58.7 Low
5 55.2 Med
6 59.1 Med
7 52.8 Med
8 54.5 Med
9 NaN Med
10 51.7 Medh
11 48.8 Medh
12 53.9 Medh
13 49.0 Medh
14 NaN Medh
15 44.6 high
16 48.5 high
17 41.0 high
18 47.3 high
19 46.1 high
实现这一目标的最佳方法是什么? 我尝试组合成一个 numpy 数组并将其传递到数据帧中,但我收到错误消息“必须通过二维输入”
data_vals = np.array([[low],[med],[medh],[high]])
tomato_df = pd.DataFrame(data = data_vals)
您需要将它们转换为数据帧,然后append
:
df_low = pd.DataFrame(low)
df_low['EC'] = 'Low'
df_med = pd.DataFrame(med)
df_med['EC'] = 'Med'
df_medh = pd.DataFrame(medh)
df_medh['EC'] = 'Medh'
df_high = pd.DataFrame(high)
df_high['EC'] = 'High'
df = df_low.append([df_med,df_medh, df_high])
df.rename(columns={ df.columns[0]: 'yield'}, inplace = True)
df
yield EC
0 59.5 Low
1 53.3 Low
2 56.8 Low
3 63.1 Low
4 58.7 Low
0 55.2 Med
1 59.1 Med
2 52.8 Med
3 54.5 Med
4 NaN Med
0 51.7 Medh
1 48.8 Medh
2 53.9 Medh
3 49.0 Medh
4 NaN Medh
0 44.6 High
1 48.5 High
2 41.0 High
3 47.3 High
4 46.1 High
一种方法是简单地使用嵌套的 for 循环:
res = (
pd.DataFrame([[v, name] for arr, name in zip([low, med, medh, high], ["Low", "Med", "Medh", "High"]) for v in arr],
columns=["Yield", "EC"]))
print(res)
输出
Yield EC
0 59.5 Low
1 53.3 Low
2 56.8 Low
3 63.1 Low
4 58.7 Low
5 55.2 Med
6 59.1 Med
7 52.8 Med
8 54.5 Med
9 NaN Med
10 51.7 Medh
11 48.8 Medh
12 53.9 Medh
13 49.0 Medh
14 NaN Medh
15 44.6 High
16 48.5 High
17 41.0 High
18 47.3 High
19 46.1 High
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.