我注意到在pandas数据帧中使用.loc时,它不仅会找到我要查找的数据行,还会包含我正在搜索的数据帧的标题列名称。
因此,当我尝试附加.loc数据行时,它会包含数据+列标题 - 我不想要任何列标题!
##1st dataframe
df_futures.head(1)
date max min
19990101 2000 1900
##2nd dataframe
df_cash.head(1)
date$ max$ min$
1999101 50 40
##if date is found in dataframe 2, I will collect the row of data
data_to_track = []
for ii in range(len(df_futures['date'])):
##date I will try to find in df2
date_to_find = df_futures['date'][ii]
##append the row of data to my list
data_to_track.append(df_cash.loc[df_cash['Date$'] == date_to_find])
我希望for循环只返回19990101 50 40
目前返回0 19990101 50 40,日期$,最大$,最小$
答案 0 :(得分:1)
对于这个问题的清晰度,我同意其他意见。但是,如果要获取的只是一个包含特定行数据的字符串,则可以使用Pandas的to_string()
方法。
就您而言,
代替此:
df_cash.loc[df_cash['Date$'] == date_to_find]
您可以获得一个仅包含行数据的字符串:
df_cash[df_cash['Date$'] == date_to_find].to_string(header=None)
还请注意,我删除了.loc部分,该部分将输出相同的结果。
如果您的数据框具有多个列,并且您不希望它们以字符串形式连接(可能会带来数据类型问题,并且如果以后要分离它们,则可能会出现问题),则可以使用list()方法,例如:
list(df_cash[df_cash['Date$'] == date_to_find].iloc[0])