我有一个要从中提取数据的.csv文件。该文件有四列['time', 'apple', 'banana', 'orange']
。
这些列各有100行。我希望从香蕉列中提取数据,并将其插入数据框,条件是时间列中的值不为零。注意:在时间t之后,时间列中的值会返回零,并且我不希望提取这些行。
我想提取时间列,并将其用作数据框中的列名,然后将香蕉值作为数据框中的一行。
我希望将其放入数据帧的原因是我有几个希望从中提取数据的.csv文件。我有一个已经由一列组成的数据框,该列包含每个.csvs
的路径我用来提取香蕉栏的代码是:
for i, p in enumerate(df['path']):
if re.match(r".*\.L.*", p):
df = pd.read_csv(p, index_col=False, sep='\s+|\t+|\s+\t+|\t+\s+', comment='#', names=['time', 'apple', 'banana', 'orange', 'pear'], usecols=[1])
df.iloc[i, 3:] = df['apple'].values
但是,这并没有提供我希望的列名,并且将提取csv的所有行,不仅是时间值非零的行。
答案 0 :(得分:2)
假设您的数据框名为df
。您可以选择想要的特定行;
sub_df = df[['time', 'banana']][df['time'] > 0]
其中['time', 'banana']
是您要选择的数据帧中的行的列表,而df['time'] > 0
是仅用于使用时间大于零的行的过滤器。
然后您可以像旋转它一样
df_pivot = sub_df.pivot(columns='time', values='banana')
在这里,您将时间列及其值设为香蕉。
您也可以像这样
df_pivot = df[['time', 'banana']][df['time'] > 0].pivot(columns='time', values='banana')
希望有帮助!