Python 熊猫过滤支持别名吗?

Python 熊猫过滤支持别名吗?,python,pandas,Python,Pandas,考虑以下情况中的过滤操作: first\u repress\u wo\u comments=pandas.read\u csv(路径) 最近的=第一次答复和评论[ (第一次回复我的意见。在“2018-02-01”上发布) (第一次回复意见。发布于

考虑以下情况中的过滤操作:

first\u repress\u wo\u comments=pandas.read\u csv(路径)
最近的=第一次答复和评论[
(第一次回复我的意见。在“2018-02-01”上发布)
(第一次回复意见。发布于<'2018-03-13')
]
请注意,数据帧
first\u repress\u wo\u comments
的名称指定了三次。如果有额外的过滤条件,那就更糟了。是否有任何方法可以以类似于
SQL
中别名的方式为df-添加别名

更新我知道的
dataframe.query()
。我想知道使用括号方法时有哪些选项(在
[]
中)。谢谢

您可以使用它,并可以链接每个新条件:

df = pd.DataFrame({'POST_CREATED_AT': pd.date_range('20180128', periods=7)})
print(df)

  POST_CREATED_AT
0      2018-01-28
1      2018-01-29
2      2018-01-30
3      2018-01-31
4      2018-02-01
5      2018-02-02
6      2018-02-03


您可以为此使用,并可以链接每个新条件:

df = pd.DataFrame({'POST_CREATED_AT': pd.date_range('20180128', periods=7)})
print(df)

  POST_CREATED_AT
0      2018-01-28
1      2018-01-29
2      2018-01-30
3      2018-01-31
4      2018-02-01
5      2018-02-02
6      2018-02-03



x=first\u repress\u wo\u comments
然后只
x.POST\u CREATED\u AT…
为什么不创建一个变量
date\u field=first\u repress\u wo\u comments.POST\u CREATED\u AT
?更好的方法是使用
pd.Series.between
,即
date\u field.between(x,y,inclusive=False)
。您还可以使用
df.query()
,它接受一个查询字符串,允许您访问不带数据帧名称的列。不过,这可能会对性能产生(好的或坏的)影响。但是,一般来说,您可以只指定另一个较短的名称。
x=first\u replays\u wo\u comments
然后只
x.POST\u CREATED\u AT…
为什么不创建一个变量
date\u field=first\u replays\u wo\u comments.POST\u CREATED\u AT
?更好的方法是使用
pd.Series.between
,即
date\u field.between(x,y,inclusive=False)
。您还可以使用
df.query()
,它接受一个查询字符串,允许您访问不带数据帧名称的列。不过,这可能会对性能产生(好的或坏的)影响。但是,一般来说,您可以只指定另一个较短的名称.Thx——也许我应该在不使用基于字符串的df.query的情况下进行指定(我知道这种方法)。你的回答无论如何都会对别人有帮助。我明白了。已经在我的答案中添加了另一个方法@javadbaI我真的在寻找别名之类的东西(不是额外的方法)-但是在任何情况下都会将你的答案投票为“可能对读者有帮助”@Efran FYI你可以在
query
中组合字符串如下:
df.query(<20180201
Thx-也许我应该在不使用基于字符串的df.query的情况下进行指定(我知道这种方法)。你的回答无论如何都会对别人有帮助。我明白了。已经在我的答案中添加了另一个方法@javadbaI我真的在寻找别名之类的东西(不是额外的方法)-但是在任何情况下都会将你的答案投票为“可能对读者有帮助”@Efran FYI你可以在
query
中组合字符串如下:
df.query(<20180201
df_filter = df.query('POST_CREATED_AT > 20180201').query('POST_CREATED_AT < 20180313')
print(df_filter)

  POST_CREATED_AT
5      2018-02-02
6      2018-02-03
df = pd.DataFrame({'POST_CREATED_AT': pd.date_range('20180128', periods=7),
                   'ID':['A', 'B', 'C', 'D', 'E', 'F', 'G']})
print(df)
  POST_CREATED_AT ID
0      2018-01-28  A
1      2018-01-29  B
2      2018-01-30  C
3      2018-01-31  D
4      2018-02-01  E
5      2018-02-02  F
6      2018-02-03  G
m1 = df['POST_CREATED_AT'].between('20180201', '20180313', inclusive=False)
m2 = df['ID'] == 'G'

print(df[m1 & m2])

  POST_CREATED_AT ID
6      2018-02-03  G