我的CSV文件如下:
dates, names, column3, column4, column5, column6, column7
1-3-2017,Bob,somedata,somedata,somedata,somedata,somedata
1-1-2018,Bob,-,-,-,-,-
1-1-2017,Bob,somedata,somedata,somedata,somedata,somedata
如果使用pandas在column3,column4,column5,column6和column7中这些行包含-
,我想删除行。
删除不必要的信息后,文件将如下所示
dates, names, column3, column4, column5, column6, column7
1-1-2017,Bob,somedata,somedata,somedata,somedata,somedata
1-3-2017,Bob,somedata,somedata,somedata,somedata,somedata
无法理解如何做到这一点。谢谢你的帮助。
答案 0 :(得分:0)
尝试:
filtered = data[(data.column3 != "-") & (data.column4 != "-") & (data.column5 != "-") & (data.column6 != "-") & (data.column7 != "-")]
答案 1 :(得分:0)
如果单元格可能只包含' - ',请尝试
new_df = df[~(df.iloc[:, 2:] == '-').any(1)]
如果它们可能包含“ - ”以及其他一些字符,
new_df = df[~df.iloc[:, 2:].apply(lambda x: x.str.contains('-').any(), axis = 1)]
无论哪种方式,
dates. names column3 column4 column5 column6 column7
0 1-3-2017 Bob somedata somedata somedata somedata somedata
2 1-1-2017 Bob somedata somedata somedata somedata somedata
答案 2 :(得分:0)
一种直接的方法是将-
转换为np.nan
,然后使用df.dropna
。
import numpy as np
df = df.replace('-', np.nan).dropna(subset=['column'+str(i) for i in range(3, 8)])
# dates names column3 column4 column5 column6 column7
# 0 1-3-2017 Bob somedata somedata somedata somedata somedata
# 2 1-1-2017 Bob somedata somedata somedata somedata somedata