Python 3.x 使用Python在特定行中删除具有特定字符串的列
所以现在我有一个庞大的人口普查数据集,我正试图通过熊猫来清理。目前,我有一组测量“统计显著性”的列,其中包含空值或和“*”。“统计显著性”短语不在列名中,而是列的第一行作为描述行。 其中有2000多个,我只想使用Python将它们全部删除(我将在R中进行大部分实际数据分析)。 经过一些调整后,我成功地输出了一个新的CSV文件:Python 3.x 使用Python在特定行中删除具有特定字符串的列,python-3.x,pandas,data-cleaning,Python 3.x,Pandas,Data Cleaning,所以现在我有一个庞大的人口普查数据集,我正试图通过熊猫来清理。目前,我有一组测量“统计显著性”的列,其中包含空值或和“*”。“统计显著性”短语不在列名中,而是列的第一行作为描述行。 其中有2000多个,我只想使用Python将它们全部删除(我将在R中进行大部分实际数据分析)。 经过一些调整后,我成功地输出了一个新的CSV文件: import pandas as pd df = pd.read_csv('~/Desktop/ht1.csv') def drop(data): df2 = [
import pandas as pd
df = pd.read_csv('~/Desktop/ht1.csv')
def drop(data):
df2 = []
for x in data:
if "Significance" in data.loc[0,x]:
data.drop(x, axis = 1, inplace=True)
return data
ndf = drop(df)
ndf.to_csv('~/Desktop/ht2.csv')
然而,列实际删除时存在一个问题(如中所示,它们根本不删除)。我试图用我相对有限的编码知识和令人沮丧的迟钝的互联网文章来解决这个问题,我已经不知所措了
任何帮助都将不胜感激。您的代码中有两个缺陷:
返回
是在if
块中执行的,因此您返回
删除第一列后的数据,进一步删除包含
“重要性”保留在数据框中def drop(data):
cols = []
for x in data:
if "Significance" in data.loc[0,x]:
cols.append(x)
data.drop(cols, axis = 1, inplace=True)
return data
一种更短、更优雅的方法是
newdf = df.loc[:,~df.iloc[0].str.contains('Significance')]
是否要删除包含单词的行或列本身?