遇到的问题:
for i, j in new_data.groupby(by=['embryo_id', 'company_id']):
if j.shape[0] == 2:
relationshipdata = relationshipdata[~((relationshipdata.embryo_id == i[0]) &
(relationshipdata.company_id == i[1]) &
(relationshipdata.flag_contract == 0))]
new_data 是一个DataFrame类型数据,不太清楚i,j所表示的含义:
>>> import pandas as pd
>>> date1=pd.DataFrame(data=[[0,1,2],[3,4,5]], columns=['a','b','c'])
>>> date1
a b c
0 0 1 2
1 3 4 5
>>> date1.groupby(by=['a','b'])
<pandas.core.groupby.generic.DataFrameGroupBy object at 0x000002539A8D02E0>
>>> for i,j in date1.groupby(by=['a','b']):
print(i)
print(j)
(0, 1)
a b c
0 0 1 2
(3, 4)
a b c
1 3 4 5
>>> for i,j in date1.groupby(by=['a','b']):
print(i)
print(j.shape)
(0, 1)
(1, 3)
(3, 4)
(1, 3)
>>> for i,j in date1.groupby(by=['a','b']):
print(i)
print(j.shape[0])
(0, 1)
1
(3, 4)
1
>>> date1 = date1[~(date1.a == 0)]
>>> date1
a b c
1 3 4 5
# 拓展
>>> date2 = pd.DataFrame(data=[[0, 1, 2], [3, 4, 5],[0,5,6]], columns=['a', 'b', 'c'])
>>> date2
a b c
0 0 1 2
1 3 4 5
2 0 5 6
>>> for i,j in date2.groupby(by=['a']):
print(i)
print(j)
0
a b c
0 0 1 2
2 0 5 6
3
a b c
1 3 4 5
python的字符串前面加f表示格式化字符串,加f后可以在字符串里面使用用花括号{}括起来的变量和表达式,如果字符串里面没有表达式,那么前面加不加f输出应该都一样。
格式化的字符串文字前缀为’f’和接受的格式字符串相似str.format()。它们包含由花括号包围的替换区域。替换字段是表达式,在运行时进行评估,然后使用format()协议进行格式化。
class Desk():
def desk(self):
print('能放东西')
print(self)
# 再定义一个对象
desk1 = Desk()
desk1.width1 = 400
desk1.height = 500
#当不用f’{}‘时候
print(‘桌子的宽度是{width1},桌子高度是{height}厘米’.format(width1=desk1.width1,height=desk1.height))
#当用f’{}‘时候
print(f’桌子的宽度是{desk1.width1}厘米’)
print(f’桌子高度是{desk1.height}厘米’)
其余字符串前加u,r,b等见下面链接:
python-字符串前面f的作用_pyorz的博客-CSDN博客_python字符串前面加个f
当前导入的数据为:
import datetime as dt
dateparse = lambda dates: dt.datetime.strptime(dates, '%Y-%m')
#---其中parse_dates 表明选择数据中的哪个column作为date-time信息,
#---index_col 告诉pandas以哪个column作为 index
#--- date_parser 使用一个function(本文用lambda表达式代替),使一个string转换为一个datetime变量
data = pd.read_csv('AirPassengers.csv', parse_dates=['Month'],
index_col='Month',date_parser=dateparse)
data.index