从Pandas数据框中删除不需要的值

svgewumm  于 2023-09-29  发布在  其他
关注(0)|答案(2)|浏览(106)

我正在创建一个数据框,希望删除其中不相关的条目。我想去掉那些不是数字的值。
我使用以下代码(credit)创建了 Dataframe :

import pandas as pd
import os

os.chdir('/pathdirectory/files')
csv_files = [f for f in os.listdir() if f.endswith('.csv')]

dfs = []

for csv in csv_files:
    df = pd.read_csv(csv, header=None)
    df = df.T
    df.columns = ['DC energy', 'AC energy', 'Capacity factor', 'Inverter Loss']
    dfs.append(df)

final_df = pd.concat(dfs, ignore_index=True)
final_df

返回this data frame。显然,我想删除数据框中的措辞,但我正在努力做到这一点。
任何帮助都非常感谢。

ru9i0ody

ru9i0ody1#

应将CSV的第一列设置为索引:

pd.read_csv(csv, header=None, index_col=0)

或者:

cols = ['DC energy', 'AC energy', 'Capacity factor', 'Inverter Loss']
    
final_df = pd.concat([pd.read_csv(csv, header=None, index_col=0)
                      for csv in csv_files],
                     axis=1, ignore_index=True).T.set_axis(cols)

请注意,这假设所有文件都具有相同的列顺序。您也可以保留默认名称:

final_df = pd.concat([pd.read_csv(csv, header=None, index_col=0)
                      for csv in csv_files],
                     axis=1, ignore_index=True).T
wyyhbhjk

wyyhbhjk2#

#Applying this example to your data
    import pandas as pd
        
    # Create a sample DataFrame
    data = {'A': [1, 'text', 2, '123', 3],
                'B': [4, 5, 'abc', 6, '789']}
    df = pd.DataFrame(data)
        
    # Convert all values in the DataFrame to numeric, coercing non-numeric values to NaN
    df = df.apply(pd.to_numeric, errors='coerce')
        
    # Drop rows with NaN values (non-numeric entries)
    df = df.dropna()
        
    # Reset the index if needed
    df = df.reset_index(drop=True)
        
    # Print the resulting data frame.
        print(df)

1.我们使用df.apply(pd.to_numeric,errors='coerce')将DataFrame中的所有值转换为数字,将非数字值强制转换为NaN。2.我们使用df.dropna()删除包含NaN值的行,这些值对应于非数字条目。3.如果希望索引连续且没有任何间隙,可以使用df.reset_index(drop=True)重置索引。4.运行此代码后,df将仅包含具有数值的行,非数值项将被删除。

相关问题