我有一个看起来像这样的熊猫数据框:
Time (min) 20m Wind Speed (m/s) Wind Dir (deg) 40m Wind Speed (m/s) Wind Dir (deg).1 60m Wind Speed (m/s) 60m Wind Dir (deg)
1.0 1.5 120.4 2.5 133.2 3.5 190.5
我想将所有“风向”列合并为一个“风向”(deg)列,并将所有“风速”列合并为一个“风速(m / s)”列,以便数据框如下所示:
Time (min) Wind Speed (m/s) Wind Dir (deg)
1.0 1.5 120.4
NAN 2.5 133.2
NAN 3.5 190.5
我研究了合并,联接和连接,但是这些似乎是用于将不同的数据帧组合在一起。我以为pd.melt或append可能有用,但我认为我没有使用示例正确地实现它。有人可以指出我正确的方向吗?谢谢!
因此,我只是复制并粘贴了您的第一个代码块,并将其保存为test.ssv。您使用pd.melt的方向正确。
# Python 2.7.12 and pandas 0.19.2
import pandas as pd
df = pd.read_csv('~/Desktop/test.ssv', sep='\s\s+')
wind_speed_df = pd.melt(
df, value_vars=['20m Wind Speed (m/s)', '40m Wind Speed (m/s)', '60m Wind Speed (m/s)'])
wind_dir_df = pd.melt(
df, value_vars=['Wind Dir (deg)', 'Wind Dir (deg).1', '60m Wind Dir (deg)'])
wind_speed_df.reset_index(inplace=True, drop=True)
wind_dir_df.reset_index(inplace=True, drop=True)
wind_dir_df = wind_dir_df.rename(columns={'value': 'Wind Speed (m/s)'})
wind_speed_df = wind_speed_df.rename(columns={'value': 'Wind Dir (deg)'})
new_df = wind_speed_df.merge(wind_dir_df, right_index=True, left_index=True)
new_df.drop(['variable_x', 'variable_y'], inplace=True, axis=1)
new_df['Time (min)'] = df['Time (min)'].repeat(3).reset_index(drop=True)
print new_df.head()
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句