[英]Select column from multiple DataFrames based on same header prefix
我有一个函数,它遍历Age
列的csv
行,如果年龄为负,它将把Key
和Age
值打印到文本文件中。
def neg_check():
results = []
file_path = input('Enter file path: ')
file_data = pd.read_csv(file_path, encoding = 'utf-8')
for index, row in file_data.iterrows():
if row['Age'] < 0:
results.append((row['Key'], row['Age']))
with open('results.txt', 'w') as outfile:
outfile.write("\n".join(map(str, results)))
outfile.close()
为了使此代码可重复,我该如何修改它,以便它在列以“ Age
”开头时迭代行? 我的文件有许多列以“ Age
”开头但以不同的方式结束。 . 我尝试了以下...
if row.startswith['Age'] < 0:
和
if row[row.startswith('Age')] < 0:
但它抛出AttributeError: 'Series' object has no attribute 'startswith'
错误。
样本 1
Key Sex Age
1 Male 46
2 Female 34
样本 2
Key Sex AgeLast
1 Male 46
2 Female 34
样本 3
Key Sex AgeFirst
1 Male 46
2 Female 34
我会一步完成,但有几种选择。 一种是filter
:
v = df[df.filter(like='AgeAt').iloc[:, 0] < 0]
或者,
c = df.columns[df.columns.str.startswith('AgeAt')][0]
v = df[df[c] < 0]
最后,要写入 CSV,请使用
if not v.empty:
v.to_csv('invalid.csv')
使用熊猫不需要循环数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.