[英]How to find an index by content via input() in pandas Dataframe?
我正在尝试根据表的内容查找索引,在本例中,它是日期形式为 'd/m/YYYY' 或 'dd/mm/YYYY' 的字符串,表示 2 位数的日期和月份分别。 我正在寻找我想使用 input() 以交互方式查找的特定月份的第一天。
只要我对月份进行硬编码,代码就可以正常工作:
stream = open(sys.argv[1], 'r')
for path in stream:
df = pd.read_csv('{}'.format(path))
df['Idx'] = df['Date'].str.contains('^1/8/20\d{2} 0:00:00')
index_month = df[df['Idx']==True].index.values.astype(int)[0]
print('Index was found at {}'.format(month, index_month))
Output:
Index was fount at 19516
Index was found at 19527
...
...
但给
ValueError: cannot switch from automatic field numbering to manual field specification
当我使用input()
查找相应的月份时(请参见下面的代码)
print("Enter Month as number:")
month=input()
stream = open(sys.argv[1], 'r')
for path in stream:
df = pd.read_csv('{}'.format(path))
df['Idx'] = df['Date'].str.contains('^1/{}/20\d{2} 0:00:00'.format(month))
index_month = df[df['Idx']==True].index.values.astype(int)[0]
print('Index was found at {}'.format(month, index_month))
错误追溯到
df['Idx'] = df['Date'].str.contains('^1/{}/20\d{2} 0:00:00'.format(month))
是否可以通过这种方式解决,或者有更好的方法吗?
你的问题就在这里:
'^1/{}/20\d{2} 0:00:00'
{2}
由 str 的format
方法解释,因此您需要使用双大括号将其转义:
>>> month = 3
>>> re.search('^1/{}/20\d{{2}} 0:00:00'.format(month), '1/3/2020 0:00:00').group()
'1/3/2020 0:00:00'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.